+-
早先年考研的主考科目正是【算法与数据结构】,复习得还算可以。也在当时[百度知道]上回答了许多相关问题,现把他们一起汇总整理一下,供读者参考。
【1】
原题目地址:https://zhidao.baidu.com/question/1574956570322831900.html?entry=qb_uhome_tag
题目: C语言的题目,求大神来看看 小学生算术学习系统。不断的从键盘输入两个整数级一个运算符(+-*/)之一,并输入计算结果。若计算结果正确,则显示“很好,做对了。”负责献世“做错了,再做一次“。系统规定,只能输入三次答案。当第三次输入答案任然错误时,系统将显示正确答案。本系统要求有”是否继续”的提示,用户输入“y”,表示继续,输入“n”表示结束
答:
#include <stdio.h> #include <time.h> #include <windows.h> #include <stdlib.h> int main() { int a,b,Suan; int sum; //用户输入答案 int C; //正确答案 int D; //正确余数 int yu = 0; //输入的余数 int t = 0; //开关变量(求余数) int i = 3; int temp = NULL; char Insert = NULL; srand(time(NULL)); Q: a = rand()%100; b = rand()%100; Suan = rand()%100; t = 0; if(Suan <=25) { C = a+b; printf("%d+%d=? :\n",a,b); temp = 1; D = 0; yu = 0; } else if(Suan > 26 && Suan <= 50) { C = a-b; printf("%d-%d=? :\n",a,b); temp = 2; D = 0; yu = 0; } else if(Suan > 50 && Suan <= 75) { C = a*b; printf("%d*%d=? :\n",a,b); temp = 3; D = 0; yu = 0; } else if(Suan > 75 && Suan <= 100) { C = a/b; D = a%b; t = 1; printf("%d/%d=? (商):\n",a,b); temp = 4; } A: if(5 == temp) { printf("%d+%d=? :\n",a,b); } if(6 == temp) { printf("%d-%d=? :\n",a,b); } if(7 == temp) { printf("%d*%d=? :\n",a,b); } if(8 == temp) { printf("%d/%d=? (商):\n",a,b); } if(temp <= 4) { temp++; temp++; temp++; temp++; } scanf("%d",&sum); if(t == 1) { printf("余数多少:"); scanf("%d",&yu); } printf("\n---------------------\n"); if(C == sum && D == yu) printf("很好,做对了。\n"); else { if(1 != i) { printf("做错了,再做一次!(你还有%d次机会)\n",i-1); i--; goto A; } else { if(t == 0) printf("做错了!正确答案是 %d!\n",C); else { printf("做错了!正确答案(商)是 %d!\n",C); printf("(余数)是 %d!\n",D); } //i = 3; } } i = 3; printf("-----------------------------------------------\n"); printf("是否继续<y/n>:\n"); P: scanf("%c",&Insert); if('y' == Insert) goto Q; if('n' == Insert) exit(-1); else { Insert = NULL; goto P; } system("pause"); return 0; }
【2】
原题目地址:https://zhidao.baidu.com/question/1495135027232307579.html?entry=qb_uhome_tag
题目: 求解c语言指针问题
#include<stdio.h> #include<conio.h> #define N 2 #define M 4 double *calculate1(double (*p)[M], double *p1) { int i, j; double s=0; for (j=0; j<M; j++) { for (i=0; i<N; i++) { s+=*(*p+j); p++; } for (i=0; i<N; i++) p--; *(p1+j)=s; s=0; } p1=p1-M; return p1; } void main() { int m; double score [M]={0, 1, 2, 3, 4, 5, 6, 7}, sbj[M], (*p)[M]=score, *p1=sbj; p1=calculate1(p, p1); for (m=0; m<M; m++) printf("\n第%d科总分为%.1lf\n", m+1, *(p1+m)); }
score
[M]表示N个学生的M门科目的成绩,算出各科的总分 为什么结果是这样
答:
#include<stdio.h> #include<conio.h> #include <windows.h> #define N 2 #define M 4 void calculate(double (*p)[M],double *p1) { int i,j; double s=0; /*for(i=0;i<N;i++) { for(j=0;j<M;j++) { printf("%f\t",*(*(p+i)+j)); } putchar(10); }*/ for(i=0;i<M;i++) { for(j=0;j<N;j++) { //printf("%f\t",*(*(p+j)+i)); s+=*(*(p+j)+i); } *(p1+i)=s; s=0; } return; } int main() { int m; double score [M]={0,1,2,3,4,5,6,7},sbj[M], (*p)[M]=score,*p1=sbj; calculate(p,p1); for(m=0;m<M;m++) printf("\n第%d科总分为%.1lf\n",m+1,*(p1+m)); system("pause"); return 0; }
我读不懂你的程序,很多都不需要的。你可以参照我写的!有问题可以追问!
【3】
原题目地址:https://zhidao.baidu.com/question/1895405030720891420.html?entry=qb_uhome_tag
题目: 求C语言大神助攻解决这几道问题
答:
/*******/ /***1***/ /*******/ #include<stdio.h> #include <windows.h> int Judge(char a[],char b[]) { int i,j; for(i=0,j=0; a[i]!='\0' ; i++,j++) { if(a[i] == b[j]) continue; if(a[i] > b[j]) return 1; if(a[i] < b[j]) return -1; } return 0; } int main() { int m = NULL; char str1[5] = "abc"; char str2[5] = "abb"; puts(str1); putchar(10); puts(str2); m = Judge(str1,str2); if(m == 1) printf("[>]\n"); else if(m == -1) printf("[<]\n"); else printf("[=]\n"); system("pause"); return 0; } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// /*******/ /***2***/ /*******/ #include<stdio.h> #include <windows.h> int main() { float sum = 1.0; int ss; int s=1,s1=1; printf("sum=1/1"); while(1.0/s >= 1e-6) { sum += 1.0/s; printf(" +1/%d",s); ss = s1; s1 = s; s += ss; } sum += 1.0/s; printf(" +1/%d",s); printf(" = %f\n",sum); system("pause"); return 0; } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// /*******/ /***3***/ /*******/ #include<stdio.h> #include <windows.h> void Func(int a[][4]) { int i,j,t = 0; for(i=0; i<4; i++) { for(j=0; j<4; j++) { if(a[j][i] > 0) t++; } if(t>=1) { printf("%d\n",i); t = 0; } } return; } int main() { int a[4][4]; int i,j; for(i=0; i<4; i++) for(j=0; j<4; j++) scanf("%d",&a[i][j]); for(i=0; i<4; i++) { for(j=0; j<4; j++) printf("%d\t",a[i][j]); putchar(10); } putchar(10); Func(a); system("pause"); return 0; } /*******/ /***4***/ /*******/ #include <stdio.h> #include <windows.h> void Connect(char a[],char b[],char c[]) { int i,j; for(i=0; a[i]!='\0'; i++) c[i] = a[i]; for(j=0; b[j]!='\0'; j++) c[i++] = b[j]; c[i]='\0'; return; } int main() { int m = NULL; char str1[5] = "abc"; char str2[10] = "bcde"; char str3[20]; printf("str1="); puts(str1); putchar(10); printf("str2="); puts(str2); putchar(10); Connect(str1,str2,str3); printf("str3="); puts(str3); system("pause"); return 0; } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// /*******/ /***5***/ /*******/ #include<stdio.h> #include <windows.h> int main() { int i; float sum=0; double f1=1.0,f2=1.0,t; printf("sum="); while(sum<=100.0) { sum += f1/f2; printf(" +%f/%f",f1,f2); t=f2; f2=f2+f1; f1=t; } printf("= %.2f\n",sum); system("pause"); return 0; } //////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// /*******/ /***6***/ /*******/ #include<stdio.h> #include <windows.h> void Func(int a[][4]) { int i,j,t = 0; for(i=0; i<4; i++) { for(j=0; j<4; j++) { if(a[i][j] > 0) t++; } if(t>=1) { printf("%d\n",i); t = 0; } } return; } int main() { int a[4][4]; int i,j; for(i=0; i<4; i++) for(j=0; j<4; j++) scanf("%d",&a[i][j]); for(i=0; i<4; i++) { for(j=0; j<4; j++) printf("%d\t",a[i][j]); putchar(10); } putchar(10); Func(a); system("pause"); return 0; }
请你叫我雷锋,帮你做了这么多题!有问题欢迎追问! (哈哈,当时心情肯定不错,帮忙做了那么多题目,啊哈哈~)