c语言期末上机考试题库(c语言期末考试题库及详解答案)C语言期末考试编程题1输入两个整数a和b,若a和b的平方和大于100,则输出平方和的百位以上的数字,否则输出a和 b的和。 要求: 1)输出结果时说明平方和是大于100还是小于100( 100或100 ) #includestdio.h int main(){ int a, b, c; scanf("%d%d", a, b); c = a * a + b * b; if(c 100) printf("平方和大于100n%dn", c%100); else printf("平方和小于等于100n%dn", a + b); return 0; } 2输入一个整数,判断是否是5和7的公倍数,若是则输出:5and7yes,否则再判断是否是3的倍数,若是3的倍数输出:3yes,若都不是则输出:no #includestdio.h int main(){ int input; scanf("%d", input); if(input % 5 == 0 input % 7 == 0)printf("5and7yesn"); else if(input % 3 == 0) printf("3yesn"); else printf("non"); return 0; } 第三,四题和第二题差不多 5计算公式: [ 2*x x=2 y= [ x*x+1 x2 [ 2*x*x+3*x+1 x2 要求: 1)从键盘输入x的值,根据x的值求y的值 2)输出y的值 #includestdio.h int main(){ int x, y; scanf("%d", x); if(x == 2) y = 2*x; else if(x 2) y = x*x+1; else y = 2 * x * x + 3 * x + 1; printf("%dn", y); return 0; } 8 和7差不多 下面原理都差不多 用if基本都能搞定 判断条件就行了 应该LZ能搞定了 东西有点多 -。- 就写这些吧 其他的就不一一写了^ ^ 急~期末c语言上机考试题1: #include stdio.h main() { float p=100,h=p/2; int i; for(i=2;i=10;i++) { p=p+2*h; h=h/2; } printf("%6.3f%6.3fn",p,h); return 0; } 2: #include stdio.h main() { int a[3][3],i,j,sum=0; for(j=0;j3;j++) for(i=0;i3;i++) scanf("%d",a[j][i]); for(i=0;i3;i++) sum=sum+a[i][i]; printf("%dn",sum); } 3: #include stdio.h main() { void cpy(); char a[100],b[100]; printf("请输入字符:"); gets(a); cpy(a,b); printf("%s",b); } void cpy(t,str) char t[],str[]; { int i,j=0; for(i=0;t[i]!='\0';i++) if(t[i]=='a'||t[i]=='e'||t[i]=='i'||t[i]=='o'||t[i]=='u'||t[i]=='A'||t[i]=='E'||t[i]=='I'||t[i]=='O'||t[i]=='U') { str[j]=t[i]; j++; } str[j]='\0'; } 帮忙看几道C语言的期末题目~~谢谢!6.a[2*’n’],这里是字符'n',用作乘法运算就是取出‘n'的ASCII码值进行运算,也就是110,a[2*110]自然没错;D) z=(x+1)++-y,x+1运算结果作为 常量 保存在 暂存器 中,无法进行自增运算 14. 二维数组 在 内存 中其实是 一维数组 ,比如int a[3][3],然后a[0][0]就是第0个元素,a[2][2]就是第2*3+2=8个元素,而p只是一个int*, 编译器 压根就不知道p[i][i]应该是第i*1+i还是i*2+i或者i*n+i个元素,所以只能用p[i]一维数组的形式。 *p=a这里其实是int *p = a;相当于int *p, p = a;在vs2010是直接报错的。 p++,p是int*类型,++就是移动一个int。 2.char只有8位,去掉一个符号位就剩下7位了,没法表示出130; 7.数组并不以'\0'结束,但是字符串是以'\0'结束,所以要 占个位置 ; 5.数组'\0'算长度,字符串'\0'不算长度。 (急!!)C程序期末考试上机题目2. void fun(char *s,char *t,char *p){ int i,j,k=0; for(i=0;t[i]!='\0';i++) for(j=0;s[j]!='\0';j++){ if(t[i]==s[j]) break; if(s[j]=='\0') p[k++]=t[i]; } } 3. int fun(int m){ int n=1,term=0,sum=0; while(sum=m){ term+=n; sum+=term; n++; } return n-1; } 4. void fun(int *x,int n){ int min=0; int i; for(i=1;in;i++) if(*(x+i)*(x+min)) *(x+min)=*(x+i); int temp; temp=*x; *x=*(x+min); *(x+min)=temp; min=1; for(i=2;in;i++) if(*(x+i)*(x+min)) *(x+min)=*(x+i); temp=*(x+1); *(x+1)=*(x+min); *(x+min)=temp; } 5. long fun(int high,int n){ long sum=0; int prime=high-1; int i; while(n0){ while(prime=2){ for(i=2;iprime;i++) if(prime%i==0) break; if(i==prime) break; else prime--; } sum+=prime; if(prime==2)break; n--; prime--; } return sum; } 6. int fun(int *a,int n){ int i=0,j=0; while(in){ if(a[i]%2==0)a[j++]=a[i++]; else i++; } a[j]=-1; return j; } 7. void fun(int a[N][N]){ nt i,j; for(i=0;iN;i++) for(j=0;ji;j++){ a[i][j]=a[i][j]+a[j][i]; a[j][i]=0; } } 回答者: Draconious - 江湖少侠 六级 2009-6-12 08:10 2. int i,j,k=0; /*删除字符串t中与s字符串中的相同字符*/ for(i=0;istrlen(s);i++) { for(j=0;jstrlen(t);j++) { if(s[i]==t[j])//t字符串中含有s字符串中的字符 { k=j;//获得该字符在t字符串中的下标 while(kstrlen(t))//删除t字符串中的该字符 { t[k]=t[k+1];//该字符后的无素向前移一位,覆盖该字符 k++; } j--;//移位后,需判断处于已删除字符位置的字符是否与s字符串中的字符相同,所以进行j-- } } } /*删除字符串t中的重复字符*/ for(i=0;istrlen(t);i++) { for(j=i+1;jstrlen(t);j++) { if(t[i]==t[j]) { k=j; while(kstrlen(t)) { t[k]=t[k+1]; k++; } j--; } } } strcpy(p,t); 3. double result=0; int i; int n; for(i=1;;i++) { result+=i*(i+1)*0.5; if(resultm) { n=i-1;//当n=i时,resultm;因此当n=i-1时,result=m break; } } return n; 4. int i; int temp; int min; int gMin; int index; min=x[0]; for(i=1;in;i++) { if(minx[i]) { min=x[i]; index=i; } } temp=x[0]; x[0]=x[index]; x[index]=temp; gMin=x[0]; for(i=0;in;i++) { if(gMinx[i]i!=0) { gMin=x[i]; index=i; } } temp=x[1]; x[1]=x[index]; x[index]=temp; 5. int i,cout=0,j; long int sum=0; for(i=high-1;i=2;i--) { for(j=2;jsqrtf(i);j++) { if(i%j==0) { break; } } if(jsqrtf(i)) { sum+=i; cout++; } if(cout=n)break; } return sum; 6. int i,j=0,cout=0; int b[15]; for(i=0;in;i++) { if(*(a+i)%2==0) { b[j]=*(a+i); j++; cout++; } } for(i=0;icout;i++) { *(a+i)=b[i]; } *(a+cout)=-1; return cout; 7. int i,j; for(i=0;iN;i++) { for(j=0;jN;j++) { if(i!=j) a[j][i]=a[i][j]+a[j][i]; } } for(i=0;iN;i++) for(j=0;jN;j++) if(ij) a[i][j]=0; 有什么问题请直接Q上Q我。若非学习讨论,请别打扰我。谢谢合作。建议您运行一下这些程序,运行会加深印象,加深理解。 |