中国石油大学(华东)c语言在线测评答案 第10章字符串(级亲测正确)doc资料
中国石油大学(华东)C语言习题答案
C语言复习题【设计型】5.1 输出一行星号编写程序在一行中输出 N 个星号。
输入: N值输出:一行中N个星号#include<stdio.h>int main(){int a,i;scanf("%d",&a);for(i=1;i<=a;i++)printf("*");printf("\n");return 0;}【设计型】5.2 打印平行四边形输入图形的高 n ,输出如下例( n=5 )所示的图形 .*************************输入:整数n例如 5由*组成的高为5的平行四边形#include<stdio.h>int main(){int i,j,num;scanf("%d",&num);for(i=0;i<num;i++){for(j=0;j<num;j++)printf("*");printf("\n");}return 0;}【设计型】5.3 编程计算编写程序,输入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-...+1/n (保留四位小数) #include<stdio.h>int main(){double n,i,sum,k=1.0;scanf("%lf",&n);i=1,sum=0;while(i<=n)sum=sum+k/i;i++;k=-k;(用这个式子实现正负交替)}printf("sum=%.4lf\n",sum);return 0;}【设计型】5.4 分数序列有一个分数序列:...............,输入整数n,求出其前n项的和。
输出语句格式为:printf("sum=%16.10f\n",s);#include<stdio.h>int main(){int n,a,b,i,temp;double sum;scanf("%d",&n);i=1,sum=0,a=2,b=1;while(i<=n){sum=sum+a*1.0/b;temp=a;a=a+b;b=temp;(几个式子实现数值的变换)i++;}printf("sum=%16.10f\n",sum);return 0;}【设计型】5.5 求e的值编写程序,从键盘输入整数 n , 求 e 的值 . e=1+1/1!+1/2!+1/3!+..+1/n! 注意:用 double 型数据计算输出语句:printf("sum=%16.10f\n",sum);#include<stdio.h>int main(){int n,i;double sum,jc;scanf("%d",&n);i=1,sum=1.0 jc=1.0;while(i<=n){jc=jc*i;sum=sum+1.0/jc;i++;}printf("sum=%16.10f\n",sum);return 0;}【设计型】5.6 最大公约数输入两个正整数m和n,求它们的最大公约数和最小公倍数比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。
中国石油大学C语言程序设计第一册在线作业答案
第一次在线作业单选题(共22道题)收起1.(2.5分)一个C语言程序总是从()开始执行。
A、A. 主过程B、B. 主函数C、C. 子程序D、D.主程序我的答案:B 此题得分:2.5分2.(2.5分)以下叙述不正确的是:()。
A、A. 在C程序中,语句之间必须要用分号" ;" 分隔B、B. 若a是实型变量,C程序中a=10是正确的,因为实型变量中允许存放整型数C、C. 在C程序中,无论是整数还是实数都能正确无误地表示D、D. 在C程序中,%是只能用于整数运算的运算符我的答案:C 此题得分:2.5分3.(2.5分)以下不正确的C语言标识符是()。
A、A. ABCB、B. abcC、C. a_bcD、D. ab.c我的答案:D 此题得分:2.5分4.(2.5分)下列字符串是标识符的是:()。
A、A. _HJB、B. 9_studentC、C. longD、D. LINE 1我的答案:A 此题得分:2.5分5.(2.5分)以下说法中正确的是()。
A、A. C语言程序总是从第一个定义的函数开始执行B、B. 在C语言程序中,要调用的函数必须放在main()函数中定义C、C. C语言程序总是从main()函数开始执行D、D. C语言程序中的main()函数必须放在程序的开始部分我的答案:C 此题得分:2.5分6.(2.5分)在C语言中,字符型数据在内存中以()形式存放。
A、A. 原码B、B. BCD码C、C. 反码D、D. ASCII码我的答案:D 此题得分:2.5分7.(2.5分)若有定义:int a=7; float x=2.5; y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是()。
A、A. 2.500000B、B. 2.750000C、C. 3.500000D、D. 0.000000我的答案:A 此题得分:2.5分8.(2.5分)设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为()。
石油大学-C语言-在线考试附答案
《C语言》综合复习资料一、单选题1. C语言中基本数据类型有< >A〕整型、实型、逻辑型B〕整型、字符型、逻辑型C〕整型、实型、字符型D〕整型、实型、字符型、逻辑型2. 在C语言中,数字029是一个< >A〕八进制数B〕十进制数C〕十六进制数D〕非法数3. 在以下关于C语言的不严格的叙述中,错误的说法是< >A〕在标识符中,大写字母和小些字母的意义相同B〕有些不同类型的变量可以在一个表达式中运算C〕在赋值表达式中等号"=〞左边的变量和右边的值可以是不同类型D〕同一个运算符号在不同的场合可以有不同的含义4. 已知int a=4,b=5; ,这执行表达式a=a>b 后,变量a的值为< >A〕0 B〕1 C〕 4 D〕 55. 设有定义int a=3,b=4,c=5; ,则以下表达式中,值为0的表达式是< >A〕a&&b B〕a<=b C〕a||b+c&&b-c D〕!<<a<b>&&!c||1> 6. 以下不合法的赋值语句是< >A〕x=<1,y=2>; B〕++x; C〕x=y=15; D〕y=int<x>;7. 已定义c为字符型变量,则下列语句中正确的是< >A〕c='97'; B〕c="97"; C〕c="a"; D〕c=97;8. 能将高级语言编写的源程序转换为目标程序的软件是< >A〕汇编程序B〕编辑程序C〕解释程序D〕编译程序9. 设有定义char *p="abcde\0fghjik\0〞; 则printf<"%d\n〞,strlen<p>>;输出结果是< >A> 12 B> 15 C> 6 D> 510.以下选项中合法的实型常数是< >A> 5E2.0 B> E-3 C> .2E0 D> 1.3E11.以下非法的赋值语句是< >A> n=<i=2,++i>; B> j++; C> ++<i+1>; D> x=j>0;12.已定义c为字符型变量,则下列正确的赋值语句是< >A〕c='66'; B〕c="66"; C〕c="B"; D〕c=66;13.设a=3,b=4,c=-5,则逻辑表达式:a || b+c&& b==c 的值是< >A〕1 B〕0 C〕非0 D〕语法错14.以下能正确定义数组并正确赋初值的语句是< >A〕int N=5,b[N][N]; B〕int a[1][2]={{1},{3}};C〕int c[2][]= {{1,2},{3,4}}; D〕int d[3][2]={{1,2},{34}};15.结构化程序设计的三种基本结构是< >A〕顺序结构、选择结构、循环结构B〕if、switch、breakC〕for、while、do-while D〕if、for、continue16.在一个C程序中< >A〕main函数必须出现在所有函数之前B〕main函数可以在任何地方出现C〕main函数必须出现在所有函数之后D〕main函数必须出现在固定位置17.以下合法的字符常量是< >A〕‘\084’B〕‘ab’C〕‘\x43’D〕"\0〞18.用8位无符号二进制数能表示的最大十进制数为< >A〕127 B〕128 C〕255 D〕25619.设有定义:int x=0,y=1,z=1;则运行表达式:x=y++>z--后,x,y,z的值分别是< >A〕1,1,1 B〕1,2,0 C〕0,1,1 D〕0,2,020.设有int x=11;则表达式<x++*1/3>的值是< >A〕3 B〕4 C〕11 D〕1221.若有: int x=1,n=5; 则执行语句x%=<n%2>后,x的值为< >A〕3 B〕2 C〕1 D〕022.结构化程序的3种基本控制结构是< >A> if-else结构、while结构、for结构B> 顺序结构、分支机构、循环结构C> while结构、do-while结构、for结构D> 以上三种都不对23.下面程序段的输出结果是< >int k=11;printf<"%d,%o,%x〞,k,k,k>;A〕11,12,11 B〕11,13,13 C〕11,013,0xb D〕11,13,b24.在微型计算机系统中,存储一个汉字的国标码所需要的字节数是< >A> 1 B> 2 C> 3 D> 425.以下非法的赋值语句是< >A> n=<i=2,++i>; B> j++; C> ++<i+1>; D> x=j>0;26.语句:printf<"%d",<a=2>&&<b=-2>>; 的输出结果是< >A〕无输出B〕结果不确定C〕1 D〕227.设有定义语句:charstr[][20]={"Hello","Beijing"},*p=str; < >则printf<"%d\n",strlen<p+20>>; 输出结果是A〕0 B〕5 C〕7 D〕2028.以下选项中,与k=++n完全等价的表达式是< >A> k=n,n=n+1 B> n=n+1,k=n C> k=++n D> k+=n+1二、读程序,写出程序执行结果1. #include <stdio.h>void main<>{ int a=10,b=0;if<a==12>{a++; b++; }else{ a=a+3 ; b=b+3;}printf<"%d,%d\n〞,a,b>;}2. #include <stdio.h>void main<>{ ints,i;for<s=0,i=1;i<5;i++,s+=i> ;printf<"%d\n〞,s>;}3. #include "stdio.h〞void main<>{ char n=‘c’;switch<n++>{ default: printf<"error!〞>; break;case ‘a’: case ‘A’:case ‘b’: case ‘B’: printf<"good!〞>;break; case ‘c’: case ‘C’: printf<"pass!〞>;case ‘d’: case ‘D’: printf<"warm!〞>;}}4. #include <stdio.h>void main<>{ int k=4,n=0;for< ; n<k ; >{ n++;if<n%3!=0> continue;k- -;}printf<"%d,%d\n",k,n>;}5. #include <stdio.h>int f<int b[],intm,int n>{ inti,s=0;for<i=m;i<=n;i+=2> s+=b[i];return s;}void main<>{ intx,a[]={1,2,3,4,5,6,7,8,9,10};x=f<a,3,8>;printf<"%d\n〞,x>;}6. #include <stdio.h>voidcopy_str<char from[ ],char to[ ]>{ int k=0;while<from[k]!=‘\0’>{ to[k]=from[k];k++;}to[k]=‘\0’;/*末尾加上串结束标志*/}void main<>{ char str1[80]=〞red〞,str2[80]=〞green〞;copy_str <str1,str2>;puts<str2>;}7. #include <stdio.h>int d=1;void fun<int p>{ int d=5;d+=p++;printf<"%d〞,d>;}void main<>{ int a=3;fun<a>; d+=a++;printf<"%d\n", d>;}8.#include <stdio.h>void main<>{ int i,j;for<i=0;i<3;i++>{for<j=0;j<=i;j++>printf<"*">;printf<"\n">;}}9. #include <stdio.h>void main<>{ inti;for <i=0; i<3; i++>switch <i>{ case 1: printf<"%d ", i>;case 2: printf<"%d ", i>;default :printf<"%d ", i>;}}10.#include <stdio.h>intws<int x>{ if<x/100>0>return<3>;else if<x/10>0 >return<2>;elsereturn<1>;}void main<>{ int a=123;printf<"%d是%d位数\n",a,ws<a>>;}11. #include <stdio.h>#include <string.h>void main<>{ char a[10]="abc";char b[]="defg";puts<a>;puts<b>;puts<strcat<a,b>>;}12.#include <stdio.h>void main<>{ int i,n[]={1,2,3,4,5};for<i=0;i<2;i++>{ n[i]=n[4-i]+1;printf<"%d ",n[i]>;}for<i=0;i<5;i++>printf<"%d ",n[i]>;}13.#include <stdio.h>void main<>{ int a[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}};int i,j,row=0,colum=0,max;max=a[0][0];for<i=0;i<=2;i++>for<j=0;j<=3;j++>if<a[i][j]>max>{ max=a[i][j];row=i;colum=j;}printf<"max=%d,row=%d,colum=%d",max,row,colum>;}14.#include <stdio.h>voidcopy_str<char from[ ],char to[ ]>{ int k=0;while<from[k]!= ‘\0’>{ to[k]=from[k];k++;}to[k]=‘\0’;/*末尾加上串结束标志*/}void main<>{ char str1[80]= "good",str2[80]= "abcdef";copy_str<str1,str2>;puts<str2>;}15. #include <stdio.h>void main<>{ int a=0;a+=<a=8>;printf<"%d\n〞,a>;}16. #include <stdio.h>void main<>{ int x=4;if<x++>=5>printf<"%d\n〞, x> ;elseprintf<"%d\n〞, x--> ;}17. #include <stdio.h>#define MAX<a,b> <a>b ? a : b>+1void main<>{ int i=6,j=8;printf<"%d\n〞,MAX<i,j>>;}18.#include <stdio.h>void main<>{ int i,j,m=0,n=0,k=0;for<i=6; i<=9;i++>for<j=2; j<=3;j++>switch<i%j >{ case 0: m++; break;case 1: n++; break;case 2: k++; break;default: k++;n++;m++;}printf<"%d %d %d\n",m,n,k>;}19. #include <stdio.h>void main<>{ inti;for<i=1;i<5;i++>{ if<i%2>putchar<‘<’>;elsecontinue;putchar<‘>’>;}putchar<‘#’>;}20.#include <stdio.h>void main<>{ int i,n[]={1,2,3,4,5};for<i=0;i<2;i++>{ n[i]=n[4-i]+1;printf<"%d ",n[i]>;}for<i=0;i<5;i++>{ printf<"%d ",n[i]>;}}21. #include <stdio.h>int m=13;int fun<int x,int y>{ int m=3;return<x*y-m>;}void main<>{ int a=7, b=5;printf<"%d\n", fun<a,b>/m>;}22. #include <stdio.h>void main<>{ int n=2;printf<"%d,%d,%d\n〞, ++n , n+=2 , --n> ;}23. #include <stdio.h>void main<>{ int x=1,a=0,b=0;switch<x>.{ case 0: b++;case 1: a++;case 2: a++;b++;}printf<"a=%d,b=%d\n〞,a,b>;}24. #include <stdio.h>void main<>{ ints,t,a=-2,b=6;s=t=1;if<a>0> s=s+1;if<a>b> t=s+t;else if<a==b> t=5;else t=2*s;printf<"t=%d ", t>;}25. #include <stdio.h>#define S<a,b> <a>*<b>void main<>{ int a=3 ,area;area=S<a,a+3> ;printf<"area=%d\n",area>;}26. #include <stdio.h>void main<>{ inti=0,a=0;while<i<20 >{ for<;;>if<<i%10>==0> break;elsei--;i+=11;a+=i;}printf<"%d\n",a>;}27. #include <stdio.h>void main<>.{ int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};inti,s=0 ;for<i=0;i<4;i++> s+=aa[i][2];printf<"%d\n 〞,s>;}28. #include <stdio.h>fun<int a, int b>{ if<a>b> return<a>;else return<b>;}void main<>{ int x=3, y=8, z=6, r;r=fun<fun<x,y>, 2*z>;printf<"%d\n", r>;}三、编程题1. 设有分段函数:x <x <1>Y= 2x-1 <1≤x <10> 写一程序,输入 x,输出 y 的值.3x-11 <x≥10>2.编程任意输入两个实数a 和b,计算下面函数的值,并输出y 值.a-b a>by= ba a<b a*b a=b3.编程序求如下分段函数的值4.写一个判断素数的函数.要求在主函数中输入一个整数并输出相应的判断信息.5.编程序计算 s=1!-2!+3!-4!+ …… -10!,并输出结果.6.编写一个函数,将一个字符串〔最多80个字符〕中的大写字母变为小写字母,小写字母变为大写字母.要求字符串的输入与输出在主函数中完成.7.编程计算:s=1+12+123+1234+12345+123456 〔必须用循环控制语句实现〕8.编写函数change 使输入的字符串按反序存放,在主函数中输入和输出字符串.例如输入是:12345abcde,则输出为:edcba543219.编程,在N×N 矩阵中〔即N 行N 列的数组〕,求主对角线和次对角线上的各元素之和. 10.10个评委给出某选手打分,编程实现去掉一个最高分和一个最低分,求最后得分<平均分>《C语言》综合复习资料参考答案一、单选题二、读程序写出程序执行结果题1、13,32、143、pass!warm!4、3,35、186、red7、848、***9、01112210、123是3位数11、abcdefgabcdefg12、656534513、max=10,row=1,colum=214、good15、1616、517、918、4 3 119、<><>#20、656534521、222、4,3,123、a=2,b=124、t=225、area=1826、3227、2928、12三、编程题1. 设有分段函数:x <x<1>Y= 2x-1 <1≤x<10> 写一程序,输入x,输出y 的值.3x-11 <x≥10>#include <stdio.h>void main<>{intx,y;printf<"输入x:〞>;scanf<"%d\n〞,&x>;if<x<1>{y=x;printf<"x=%3d,y=x=%d\n〞,x,y>;}else if<x<10>{y=2*x-1;printf<"x=%3d,y=2*x-1=%d\n〞,x,y>;}else{y=3*x-11;printf<"x=%3d,y=3*x-11=%d\n〞,x,y>;}}2.编程任意输入两个实数a和b,计算下面函数的值,并输出y值.a-b a>b y=baa<b a*b a=b#include <stdio.h> void main<> { floata,b,y;scanf<"%f,%f 〞,&a,&b>; if<a<b> y=a/b; elseif<a==b>y=a*b; else y=a-b; printf<"y=%f\n 〞,y>; }3.编程序求如下分段函数的值 #include<stdio.h> #include<math.h> void main<> { floatx,y;scanf<"%d 〞,&x>; if<x<=0> y=fabs<x>+3; else if<x<1&&x>=0> {y=1+x*x;} else{y=2*x+sqrt<x>; printf<"x=%f,y=%f\n 〞,x,y>; }4.写一个判断素数的函数.要求在主函数中输入一个整数并输出相应的判断信息. #include <stdio.h> void main<> {intn,i;printf<"please enter a integer number,n=?〞>;scanf<"%d〞,&n>;for<i=2;i<=n-1;i++>if<n%i==0>break;if<i<n> printf<"%d is not a prime number.\n〞,n>;elseprintf<"%d is a prime number.\n〞,n>;}求素数的问题方法有很多,同学们可以到教材或网络上进行查找学习.5.编程序计算s=1!-2!+3!-4!+ …… -10!,并输出结果.#include <stdio.h>void main<>{inti,k=1,njie=1;float sum=0;for<i=1;i<=10;i++>{njie=njie*i;sum=sum+njie*k;k=-1*k;}printf<"%f\n",sum>;}6.编写一个函数,将一个字符串〔最多80个字符〕中的大写字母变为小写字母,小写字母变为大写字母.要求字符串的输入与输出在主函数中完成.#include <stdio.h>void main<>{inti;char a[80];gets<a>;puts<a>;for<i=0;i<80;i++>if<a[i]>=65&&a[i]<=90>a[i]=a[i]+32;puts<a>;}7.编程计算:s=1+12+123+1234+12345+123456 〔必须用循环控制语句实现〕#include <stdio.h>void main<>{longint t=0,s=0,i;for<i=1;i<=6;i++>{t=i+t*10;s=s+t;}printf<〞s=%ld\n〞,s>;}本题请注意s数据类型的定义.8.编写函数change使输入的字符串按反序存放,在主函数中输入和输出字符串.例如输入是:12345abcde,则输出为:edcba54321void main<>{char a[100];gets<a>;change<a>;puts<a>;}#include<stdio.h>#include<string.h>void change<char a[]>{inti,j,k;char temp;k=strlen<a>;for<i=0;i<k;i++>for<j=i+1;j<k;j++>{temp=a[i];a[i]=a[j];a[j]=temp;}}9.编程,在N×N矩阵中〔即N行N列的数组〕,求主对角线和次对角线上的各元素之和. #define N 10;main<>{inti,j;int a[N][N];int sum=0;for<i=0;i<N;i++>for<j=0;j<N;j++>scanf<"%d",&a[i][j]>;for<i=0;i<N;i++>for<j=0;j<N;j++>if<i==j||<i+j==N>>//i==j是判断是否主对角线的元素i+j==N 是判断是否是次对角线的元素sum+=a[i][j];printf<"%d",sum>;}10.10个评委给出某选手打分,编程实现去掉一个最高分和一个最低分,求最后得分<平均分>#include <stdio.h>int main<>{int a[10],i,max,min;float sum;for<i=0;i<10;i++ >{scanf<"%d",&a[i]>;}max=a[0];min=a[0];for<i=1;i<=9;i++>{if<max<a[i]>max=a[i];else if<min>a[i]>min=a[i];}for<i=0;i<=9;i++>{sum=sum+a[i];}sum=<sum-max-min>/8;printf<"%f\n",sum>;}}。
石油大学华东C语言在线考试
窗体顶端设有两字符串“Beijing”、“China”分别存放在字符数组str1[10],str2[10]中,下面语句中能把“China”连接到“Beijing”之后的为()∙A)strcpy(str1,str2);∙B)strcpy(str1,“China”);∙C)strcat(str1,“China”)∙D)strcat(“Beijing”,str2);窗体顶端2(2.0分)下列变量的定义及赋值正确的是()∙A)int i=0;j;∙B)char c=”A”;∙C)double x,y,z;x=y=z=100;∙D)float a=b=100;窗体顶端3(2.0分)设有定义语句:char str[][20]={"Hello","Beijing"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是()∙B)5∙C)7∙D)20窗体顶端4(2.0分)设有定义:int x=0,y=1,z=1;则运行表达式:x=y >z--后,x,y,z的值分别是()∙A)1,1,1∙B)1,2,0∙C)0,1,1∙D)0,2,0窗体顶端5(2.0分)下列程序段的输出结果是()x=9; while(x>7) {printf(“*”);x--;}∙A)****∙B)***∙C)**∙D)窗体顶端6(2.0分)设有定义int a[ ]={1,5,7,9,11,13},*p=a 3;则*(p-2),*(a 4)的值是()∙A)5 11∙B)1 9∙C)5 9∙D)有错误窗体顶端7(2.0分)? ?设有语句:float x=1,y; y=x 3/2; 则y的值是()∙A)1∙B)2∙C)2.0∙D)2.5窗体顶端8(2.0分)? ?若有如下语句: int *p1,*p2; 则其中int所指的是()∙A)p1的类型∙B)*p1和*p2的类型∙C)p2的类型∙D)p1和p2所能指向变量的类型窗体顶端9(2.0分)设有语句:int x=10;x = x -= x - x;,则执行语句后,x的值为()∙A)30∙B)20∙C)10∙D)40窗体顶端10(2.0分)? ?设有如下定义和执行语句,其输出结果为()int a=3,b=3; a = --b + 1;printf(“%d %d”,a,b);∙A)3 2∙B)4 2∙C)2 2∙D)窗体顶端11(2.0分)C语言中基本数据类型有()∙A)整型、实型、逻辑型∙B)整型、字符型、逻辑型∙C)整型、实型、字符型∙D)整型、实型、字符型、逻辑型窗体顶端12(2.0分)表示x≤0或x≥1的正确的表达式是()∙A)x>=1||x<=0∙B)x>1 || x<=0∙C)x>=1 or x<=0∙D)x>=1 || x<0窗体顶端13(2.0分)若有定义:int a[5];则a数组中首元素的地址可以表示为()∙A)&a∙B)∙C)a∙D)&a[1]窗体顶端14(2.0分)结构化程序设计的三种基本结构是()∙A)顺序结构、选择结构、循环结构∙B)if、switch、break∙C)for、while、do-while∙D)if、for、continue窗体顶端15(2.0分)若二维数组a有m列,则a[I][j]元素前的数组元素个数为()∙A)j*m i∙B)i*m j∙C)i*m j-113∙D)i*m j 1窗体顶端16(2.0分)能将高级语言编写的源程序转换为目标程序的软件是()∙A)汇编程序∙B)编辑程序∙C)解释程序∙D)编译程序窗体顶端17(2.0分)计算表达式(x=4*5,x*5),x 25的值是()∙A)20∙B)125∙C)100∙D)45窗体顶端18(2.0分)如有以下变量定义:int a=5,b=6,c=12;那么下列表达式结果为真的是()∙A)a-b∙B)a>b∙C)b/c∙D)c%b19(2.0分)从变量的作用域来分,可分为全局变量和局部变量,形参是()∙A)局部变量∙B)全局变量∙C)静态变量∙D)动态变量窗体顶端20(2.0分)初始化多维数组的语句中,可以默认的是()∙A)最后一个下标界∙B)第1个下标界∙C)第2个下标界∙D)以上都不对窗体顶端21(5.0)#include <stdio.h>?#define S(x) x*x?? void main()?{ int a,k=3,m=1;??a=S(k+m);?? ?printf("%d",a);? }字体字号7点击保存窗体顶端22(5.0)#include <stdio.h>?void main()?{ int x=12,y=0;? if(x>=0)?? { if(x>0) y=10;}?? else y=-10;?? printf(“y=%d\n”,y);?}字体字号点击保存窗体顶端23(5.0)#include <stdio.h>?void main()?{ int a=4,x=3,y=2,z=1;?printf("%d\n",(a<x ? a : z<y ? z : x));?}字体字号1点击保存窗体顶端24(5.0)#include <stdio.h>?int fun(int a, int b)?{ if(a>b) return(a);?else return(b);}?void main()?{ int x=3, y=8, z=6, r;?r=fun(fun(x,y), 2*z);?printf("%d\n", r);?}字体12点击保存窗体顶端25(5.0)#include <stdio.h>?void main()?{ int k=1;?? switch(k)?? { case 0: printf("A");?break;? ? case 1: printf("B");?? ? case 2: printf("I");?? ? case 3: printf("G");?break;?? ? default: printf("E");?? ? }?}字体字号BIG点击保存窗体顶端26(5.0)#include <stdio.h>?int fun(char *s1,char *s2)? { int i=0;? while(s1[i]==s2[i] && s2[i]!='\0') i++;? return (s1[i]=='\0' && s2[i]=='\0');?? ?}?void main()?? ? { char p[10]= "abcdef", q[10]= "ABCDEF";?? ? ? printf("%d\n",fun(p,q));? ? ?}字体字号点击保存窗体顶端27(10.0)写一个判断素数的函数。
中国石油大学华东c语言期末考试题及答案
中国石油大学华东c语言期末考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言中变量的描述,错误的是()。
A. 变量必须先定义后使用B. 变量的类型必须明确C. 变量名可以是任意字符D. 变量的类型决定了变量的存储空间答案:C2. 在C语言中,下列哪个关键字用于定义函数?()A. intB. voidC. returnD. main答案:B3. 下列哪个选项是正确的C语言注释方式?()A. // 这是注释B. /* 这是注释 */C. //* 这是注释D. /* 这是注释 */答案:B4. C语言中,下列哪个运算符用于比较两个值是否相等?()A. ==B. !=C. >D. <答案:A5. 在C语言中,下列哪个选项是正确的字符串定义方式?()A. char str[] = "Hello";B. char str = "Hello";C. char str[] = {"Hello"};D. char str = {"Hello"};答案:A6. 下列哪个选项是C语言中的合法整型常量?()A. 123B. 0x1AC. 0123D. All of the above答案:D7. C语言中,下列哪个选项用于定义一个指向整型的指针?()A. int *p;B. int p;C. *int p;D. int *p = 0;答案:A8. 下列哪个选项是正确的C语言数组定义方式?()A. int arr[5] = {1, 2, 3, 4, 5};B. int arr[] = {1, 2, 3, 4, 5};C. int arr[5] = {1, 2, 3};D. All of the above答案:D9. 在C语言中,下列哪个选项是正确的文件包含指令?()A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h"D. #include <stdio.h>答案:D10. 下列哪个选项是C语言中正确的条件语句?()A. if (x > 0)B. if x > 0C. if (x > 0) {D. if (x > 0) then答案:C二、填空题(每题2分,共20分)1. 在C语言中,定义一个整型变量并初始化为10的语句是:________。
中国石油大学C语言在线作业参考
中国石油大学C语言在线作业参考一、单项选择题答题要求:每题只有一个正确的选项。
1(5.0分)在下面几组数据类型中, 全为最常用的基本数据类型的是()•A)整型实型字符型••B)整型数组指针••C)数组结构体共用体••D)指针逻辑型空类型•参考答案: A收起解析解析:无2(5.0分)在C语言中,十进制数47可等价地表示为()•A)••B)02f••C)57••D)057•参考答案: D收起解析解析:无3(5.0分)执行下面程序:main(){int x=1,y=1,z=1;x=x++ +y++ +z++;printf("%d, %d , %d",x,++y,z++);输出的结果为()•A)4,3,2••B)3,3,2••C)3,3,3••D)3,2,2•参考答案: A收起解析解析:无4(5.0分)在下列描述中,正确的一条是()•A)if(表达式)语句中,表达式的类型只限于逻辑表达式••B)语句“goto 12;”是合法的••C)for(;;)语句相当于while(1)语句••D)break语句可用于程序的任何地方,以终止程序的执行•参考答案: C收起解析解析:无5(5.0分)语句:printf("%d",(a=2)&&(b=-2));的输出结果是()•A)无输出••B)结果不确定••C)1••D)2•参考答案: C收起解析解析:无6(5.0分)有如下定义:long m;char c;float x;double y;则表达式c m*x/y的值的类型是()•A)long••B)char••C)float••D)double•参考答案: D收起解析解析:无7(5.0分)在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()•A)地址传递••B)由实参传给形参,再由形参返回实参••C)值传递••D)传递方式由用户指定•参考答案: C收起解析解析:无8(5.0分)有以下函数定义:void fun( int n ,double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是()•A)fun( int y ,double m );••B)k=fun( 10 ,12.5 );••C)fun(x ,n);••D)void fun( 10 ,12.5 );•参考答案: C收起解析解析:无9(5.0分)在计算机中,C语言是属于()•A)机器语言••B)高级语言••C)汇编语言••D)自然语言•参考答案: B收起解析解析:无10(5.0分)在微型计算机系统中,存储一个汉字的国标码所需要的字节数是()•A)1••B)2••C)3••D)4•参考答案: B收起解析解析:无11(5.0分)执行int j,i=1; j=-i ; 后j的值是()•A)-1••B)-2••C)1••D)2•参考答案: A收起解析解析:无12(5.0分)在“while(!a)”中,其中“!a”与表达式()等价。
中国石油大学(华东)智慧树知到“计算机科学与技术”《程序设计(C语言)》网课测试题答案卷1
中国石油大学(华东)智慧树知到“计算机科学与技术”《程序设计(C语言)》网课测试题答案(图片大小可自由调整)第1卷一.综合考核(共10题)1.若有说明:char s1='\067', s2='1'; 则变量s1,s2在内存中各占的字节数是()A.1,1B.4,1C.3,1D.1,22.已知小写字母的ASCII码为97,对于int a=99, b='b'; printf(“%c, %d”,a, b); 的结果是()A.99,bB.c,98C.99,98D.c,b3.以下四个选项中,属于实型常量的是()A.0x12B.-12345e-3C.1e0.5D.e-54.下面有关for循环的正确描述是()A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.在for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来5.用数组名作为函数调用时的实参,则实际传递给形参的是()A.数组的第一个元素值B.数组中全部元素值C.数组的首地址D.数组的元素个数6.以下选项中合法的实型常数是()A.5E2.0B.E-3C..2E0D.1.3E7.若有说明语句:char c=‘\64’; 则变量C包含:()A.1个字符B.2个字符C.3个字符D.说明不合法,C值不确定8.已知:int a[ ][3]={1,2,3,4,5,6,7,8,9,0}; 则数组a的第一维的大小是()A.2B.3C.4D.无法确定9.已定义以下函数fun(int *p) {return *p;}该函数的返回值是()A.不确定的值B.形参p中存放的值C.形参p所指存储单元中的值D.形参p的地址值10.已知int a=4,b=5;,这执行表达式a=a>b后,变量a的值为()A.0B.1C.4D.5第1卷参考答案一.综合考核1.参考答案:A2.参考答案:B3.参考答案:B4.参考答案:D5.参考答案:C6.参考答案:C7.参考答案:A8.参考答案:C9.参考答案:D10.参考答案:A。
中国石油大学华东现代远程教育C语言
自测1试题1.第1题单选题已知小写字母的ASCII码为97,对于int a=99, b='b'; printf(“%c,%d”, a ,b);的结果是A、99, bB、c, 98C、99, 98D、c, b标准答案:B您的答案:B题目分数:5此题得分:5.0批注:2.第2题单选题下述语句的输出为int m=-1;printf(“%d,%u,%o”,m,m,m);A、-1,-1,-11B、-1,32767,-177777C、-1,32768,177777D、-1,65535,177777标准答案:D您的答案:D题目分数:5此题得分:5.0批注:3.第3题单选题设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值是A、7B、8C、9D、10标准答案:C您的答案:C题目分数:5此题得分:5.0批注:4.第4题单选题假定x和y为double型,则表达式x=2,y=x+3/2的值是A、3.500000B、3C、2.000000D、3.000000标准答案:D您的答案:D题目分数:5此题得分:5.0批注:5.第5题单选题若有定义:“int a=8,b=5,c;”,执行语句“c=a/b+0.4”后,c的值为A、1.4B、1C、2.0D、2标准答案:B您的答案:B题目分数:5此题得分:5.0批注:6.第6题单选题执行下面程序:main(){int x=1,y=1,z=1;x=x++ +y++ +z++;printf("%d, %d , %d",x,++y,z++); }输出的结果为A、4,3,2B、3,3,2C、3,3,3D、3,2,2标准答案:A您的答案:A题目分数:5此题得分:5.0批注:7.第7题单选题 void main() {int a=5, b=8;printf(“a=%d b=%d\n”, a,b);a=a+b; b=a-b; a=a-b;printf(“a=%d b=%d\n”, a,b) ; }输出的结果为A、a=5 b=8 a=8,b=5B、a=5 b=8a=5,b=8C、a=8 b=5a=8,b=5D、a=5 b=8a=8,b=8标准答案:A您的答案:A题目分数:5此题得分:5.0批注:8.第8题单选题执行int j,i=1; j=-i++; 后j的值是:A、-1B、-2C、1D、2标准答案:A您的答案:A题目分数:5此题得分:5.0批注:9.第9题单选题以下程序的输出结果是main(){int a=3;printf(“%d\n”,a+(a-=a*a));}A、-6B、12C、0D、-12标准答案:D您的答案:D题目分数:5此题得分:5.0批注:10.第10题单选题以下程序的输出结果是main(){int a=5,b=4,c=6,d;printf(“%d\n”,d=a>b?(a>c?a:c):(b)); }A、5B、4C、6D、不确定标准答案:C您的答案:C题目分数:5此题得分:5.0批注:11.第11题单选题以下程序的输出结果是main(){int a=0,i;for(i=1;i<5;i++){switch(i){case 0:case 3:a+=2;case 1:case 2: a+=3;default: a+=5;}}printf(“%d\n”,a);}A、31B、13C、10D、20标准答案:A您的答案:A题目分数:5此题得分:5.0批注:12.第12题单选题有如下程序:main(){int x=1,a=0,b=0;switch(x){case 0:b++;case 1:a++;case 2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}该程序的输出结果是A、a=2 b=1B、a=1 b=1C、a=1 b=0D、a=2 b=2标准答案:A您的答案:A题目分数:5此题得分:5.0批注:13.第13题单选题以下四个选项中不能看作一条语句的是A、{;}B、a=0,b=0,c=0;C、if(a>0)D、if(b==0)m=1;n=2;标准答案:D您的答案:D题目分数:5此题得分:5.0批注:14.第14题单选题结构化程序设计方法中有三种基本控制结构,以下不正确的是A、顺序结构B、选择结构C、循环结构D、数组结构标准答案:D您的答案:D题目分数:5此题得分:5.0批注:15.第15题单选题 C语言提供的合法关键字是A、swicthB、chaC、CaseD、default标准答案:D您的答案:D题目分数:5此题得分:5.0批注:16.第16题单选题以下四个选项中,属于实型常量的是A、0x12B、-12345e-3C、1e0.5D、e-5标准答案:B您的答案:B题目分数:5此题得分:5.0批注:17.第17题单选题以下选项中合法的用户标识是A、longB、_2TestC、3DmaxD、A.dat标准答案:B您的答案:B题目分数:5此题得分:5.0批注:18.第18题单选题在C语言中,字符型数据在内存中的存储形式是A、原码B、补码C、反码D、ASCII码标准答案:B您的答案:B题目分数:5此题得分:5.0批注:19.第19题单选题能正确表示逻辑关系“a≥10或a≤0”的C语言表达式是A、a>=10 or a<=0B、a>=10 || a<=0C、a>=10 && a<=0D、a>=10 | a<=0标准答案:B您的答案:B题目分数:5此题得分:5.0批注:20.第20题单选题以下选项中,与k=n++完全等价的表达式是A、k=n,n=n+1B、n=n+1,k=nC、k=++nD、k+=n+1标准答案:A您的答案:A题目分数:5此题得分:5.0批注:试卷总得分:100.0试卷总批注:自测2试题1.第1题单选题以下程序的输出结果是()。
中国石油大学C语言考试题及答案
中国石油大学C语言考试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. variable$2D. variable-2答案:B2. C语言中,以下哪个选项是正确的整型常量?A. 0x12B. 0.5C. 0.0e0D. 0L答案:A3. 在C语言中,哪个关键字用于定义一个函数?A. intB. returnC. functionD. void答案:A4. 下列哪个选项不是C语言中的控制语句?A. ifB. switchC. forD. case答案:D5. C语言中,字符串的结束标志是什么?A. '\n'B. '\0'C. '\t'D. '\b'答案:B6. 在C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][4];B. int array[][];C. int array[3][];D. int array[3][4][];答案:A7. C语言中,以下哪个选项是正确的函数声明?A. int add(int x, int y);B. int add(x, y);C. int add(int, int);D. int add(int x; int y);答案:A8. 在C语言中,哪个运算符用于取模运算?A. %B. //C. /D. \*答案:A9. 下列哪个选项是C语言中的合法浮点型常量?A. 3.14B. 3.14E2C. 3.14e-2D. All of the above答案:D10. C语言中,以下哪个选项是正确的结构体声明?A. struct Student { int age; char name[20]; };B. struct { int age; char name[20]; } Student;C. struct Student { int age; char name; };D. struct { int age; char name[20]; };答案:A二、填空题(每题2分,共20分)1. C语言中,用于输入的函数是________。
2022年中国石油大学(华东)公共课《C语言》科目期末试卷A(有答案)
2022年中国石油大学(华东)公共课《C语言》科目期末试卷A(有答案)一、填空题1、请读程序段:unsigned a=16;printf("%d,%d,%d\n",a>>2,a=a>>2,a);以上程序段的输出结果是_______。
2、C语言源程序文件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是3、结构化程序由________、________ 、________ 3种基本结构组成。
4、若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式.pow (y,fabs(x))的值为_______5、若有定义语句:ints=6;则表达式s%2+(s+1)%2的值为_______6、定义语句int*f();int(*f)();的含义分别为_______和_______。
7、下面程序段中循环体的执行次数是_______。
a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);8、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交换,即把b中的值给a,把c中的值给b,把a中的值给c。
例如:交换前,a=10、b=20、c=30;交换后,a=20、b=30、c=10。
请填空。
_______;a=b;b=c;_______;9、设有如下结构体说明:{int a;float b;struct ST*c;doublex[3];}st1;请填空,完成以下对数组s的定义,使其每个元素均为上述结构体类型。
_______10、下面程序wdm的运行结果是_______。
int i,x[10]={2,3,0,3,0,2,3,2,1,3},y[4]={0};for(i=0;i<10;i++)y[x[i]]++;printf("%d\n",y[3]);二、选择题11、设有说明语句:char w;intx;float y;double z;则表达式w*x+z-y值的数据类型为()。
中国石油大学C语言考试题及答案
中国石油大学C语言考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的叙述中,正确的是()。
A. C语言是高级语言B. C语言是面向对象的编程语言C. C语言是汇编语言D. C语言是机器语言答案:A2. 在C语言中,int类型的变量占用的内存空间通常是()。
A. 1个字节B. 2个字节C. 4个字节D. 8个字节答案:C3. 下列哪个选项不是C语言中的关键字()。
A. ifB. elseC. switchD. then答案:D4. C语言中,用于定义数组的关键字是()。
A. intB. floatC. arrayD. struct答案:A5. 在C语言中,用于定义函数的关键字是()。
A. functionB. defC. defineD. void答案:D6. 下列哪个选项是C语言中的合法标识符()。
A. 2variableB. variable2C. variable$2D. variable_2答案:D7. C语言中,用于表示逻辑“与”操作的运算符是()。
A. ||B. &&C. andD. or答案:B8. 在C语言中,用于定义指针的关键字是()。
A. pointerB. ptrC. refD. *答案:D9. 下列哪个选项是C语言中的合法字符串字面量()。
A. "Hello"B. 'Hello'C. "HelloD. Hello答案:A10. C语言中,用于表示逻辑“非”操作的运算符是()。
A. notB. !C. ~D. ^答案:B二、填空题(每题2分,共20分)1. 在C语言中,表示字符常量的数据类型是____。
答案:char2. C语言中,用于计算两个数的和的运算符是____。
答案:+3. 在C语言中,用于定义结构体的关键字是____。
答案:struct4. C语言中,用于定义枚举类型的关键字是____。
答案:enum5. C语言中,用于定义联合类型的关键字是____。
C语言_中国石油大学(华东)c语言上机题及答案大全
C语言_中国石油大学(华东)c语言上机题及答案大全1.1 Hello world.让我们用C语言向世界问好。
最早的程序基本是这个样子的:程序一:#includevoid main(){printf("Hello world.\");}程序二:#includeint main(){printf("Hello world.\");return 0;}上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
输入:无输出:Hello world.#includeint main(){printf("Hello world.\");}1.2 Welcome to Beijing.让我们来练习如何显示多行文字。
输入:无输出:就是下面的那段文字。
#includevoid main(){printf("Welcome\");printf("to\");printf("Beijing.\");}1.3 练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。
输入:整型变量x的值。
输出:输出整型变量x对应的十进制、八进制和十六进制形式。
认真观察-1的八进制和十六进制输出,请想想是为什么。
#includeint main(){int x;scanf("%d",&x);printf("x=%d,",x);printf("x=%o,",x);printf("x=%x\",x);return 0;}1.4 练习两个整数之间的运算背景:基本练习。
输入:接受两个整数,每个整数之间使用空格分隔。
例如输入格式为:123 444输出:分别输出进行+、-、*、/、*之后的运行结果。
中国石油大学(华东)2015年春季学期《C语言》在线考试(适用于2015年6月份考试)答案
正确答案C满分:2分4.在微型计算机系统中,存储一个汉字的国标码所需要的字节数是A. 1 B. 2 C. 3 D. 4
正确答案B满分:2分5.已知int a=4,b=5; ,这执行表达式a=a>b后,变量a的值为A. 0 B. 1 C. 4 D. 5
for(i=0;i<=9;i++)
{
sum=sum+a[i];
}
sum=(sum-max-min)/8;
printf("%f\u005cn"sum);
} 2.编程题:编程任意输入两个实数a和b,计算下面函数的值,并输出y值
正确答案
#include void
main()
{
floata,b,y;
scanf(“%f,%f”,&a,&b);
正确答案D满分:2分6.以下非法的赋值语句是A. n=(i=2, i); B. j ; C. (i 1); D. x=j>0;
正确答案C满分:2分7.设有如下程序段:
int x=2, y=3;
printf("%d\u005cn"(x,y));
则以下叙述中正确的A.输出语句中格式说明符的个数少于输出项的个数,不能正确输出B.运行时产生出错信息C.输出值为2 D.输出值为3
void main()
{ char str1[80]= "good"str2[80]= "abcdef";
copy_str(str1,str2);puts(str2);}
c语言 大学 第10章习题答案
}
A.读文件中的字符B.统计文件中的字符数并输出C.打开文件D.关闭文件
B.用“R”方式也可以打开文件
C.用“w”方式打开的文件只能用于向文件写数据,且该文件可以不存在
D.用“a”方式可以打开不存在的文件
4.fscanf函数的正确调用形式是____D_____
A. fscanf(fp,格式字符串,输出表列)
B. fscanf(格式字符串,输出表列,fp);
C. fscanf(格式字符串,文件指针,输出表列);
D. fscanf(文件指针,格式字符串,输入表列);
5.函数调用语句:fseek(fp,-20L,2);的含义是____C____
A.将文件位置指针移到距离文件头20个字节处
B.将文件位置指针从当前位置向后移动20个字节
C.将文件位置指针从文件末尾处后退20个字节
D.将文件位置指针移到离当前位置20个字节处
第10章习题答案
1.系统的标准输入文件是指____A____
A.键盘B.显示器C.软盘D.硬盘
2.若执行fopen函数时发生错误,则函C. 1 D. EOF
3、在C中,下面对文件的叙述正确的是___C_____
A.用“r”方式打开的文件只能向文件写数据
fp1指向的文件中,正确的语句是____C____
A. for(i=0;i<80;i++) fputc(a[i],fp1);
B. for(i=0;i<10;i++) fputc(&a[i],fp1);
C.for(i=0;i<10;i++) fwrite(&a[i],8,1,fp1);
中石油(华东)《C语言》在线考试(适用于2014年6月份考试)
2014年春季学期《C语言》在线考试(适用于2014年6月份考试)单选题其他题简答题一、单选题(共 10 道试题,共 20 分。
)1. C语言中,函数返回值的类型是由A. return语句中的表达式类型决定B. 调用函数的主调函数类型决定C. 调用函数时的临时类型决定D. 定义函数时所指定的函数类型决定-----------------选择:B2. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是A. 10B. 6C. 0D. 20-----------------选择:A3. 对于int a=99, b='b'; printf(“%c,%d”, a , b);的结果是A. 99, bB. c, 98C. 99, 98D. c, b-----------------选择:B4. 在C语言中,字符型数据在内存中的存储形式是A. 原码B. 补码C. 反码D. ASCII码-----------------选择:D5.已定义以下函数: fun(int *p){ return *p; }该函数的返回值是A. 不确定的值B. 形参p所指存储单元中的值C. 形参p中存放的值D. 形参p的地址值-----------------选择:D6. 设有语句:int x=10; x += x -= x - x;,则执行语句后,x的值为A. 30B. 20C. 10-----------------选择:B7. 以下选项中不能正确赋值的是A. char b[]={′H′,′e′,′l′,′l′,′o′,′!′}B. char b[10];b="Hello!"C. char b[10]= "Hello!"D. char *str="Hello!";-----------------选择:B8. 在C语言中,下列字符常量中合法的是A. ′\084′B. ′\x43′C. ′ab′D. ”\0”-----------------选择:B9. 判断字符串的长度,应该使用的函数是A. strcatB. strcmpC. strcpyD. strlen-----------------选择:D10. 计算表达式(x=4*5,x*5),x+25的值是A. 20B. 125C. 100D. 45-----------------选择:D2014年春季学期《C语言》在线考试(适用于2014年6月份考试) 单选题其他题简答题二、其他题(共 10 道试题,共 50 分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10.1 字符转换描述提取一个字符串中的所有数字字符(‘0’...‘9’)将其转换为一个整数输出。
输入一个以回车符为结束标志的字符串(少于80个字符)。
输出把字符串中的所有数字字符(‘0’...‘9’)转换为一个整数并输出。
#include<stdio.h>#include<string.h>int main(){char s[80];int i,k,n=0;gets(s);k=strlen(s);for(i=0;i<k;i++)if(s[i]>='0'&&s[i]<='9')n=n*10+(s[i]-'0');printf("%d\n",n);return 0;}10.2 合并字符串输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。
输入:两个已经排好顺序(升序)的字符串输出:一个合并在一起的有序(升序)的字符串要求:设计一个效率尽量高的算法,对每个字符串只扫描一遍就可以了。
如果采用先进行串连接,然后再进行排序的算法,则效率太低了。
#include<stdio.h>#include<string.h>int main(){char a[100],b[100],t;int k,i,j;gets(a); gets(b);strcat(a,b);k=strlen(a);/*冒泡法排序*/for(i=1;i<k;i++) /*不能用字符串数组最后一项'\0'和前面项比较,故i从1开始*/ for(j=0;j<k-i;j++)if(a[j]>a[j+1]){ t=a[j];a[j]=a[j+1];a[j+1]=t; }puts(a);return 0;}10.3 删除重复字符背景:输入一个长度不超过 100 的字符串,删除串中的重复字符。
输入:输入要检查的字符串,长度不超过100个字符。
例如:abacaeedabcdcd。
输出:删除重复字符后的字符串。
例如:abced。
#include<stdio.h>#include<string.h>int main(){char a[100],b[100];int k,i,j;gets(a);k=strlen(a);for(i=0;i<k;i++)for(j=i+1;j<k;j++)if(a[j]==a[i]) a[j]='\0';for(i=0;i<k;i++)if(a[i]!='\0')printf("%c",a[i]);printf("\n");return 0;}10.4 删除字符串中指定字符输入两个字符串 s1 和 s2 ,在 s1 中删除任何 s2 中有的字符。
输入:两个字符串 s1 和 s2 输出:删除后的字符串 s1#include<stdio.h>#include<string.h>{char s1[20],s2[20];int k1,k2,i,j;gets(s1); gets(s2);k1=strlen(s1); k2=strlen(s2);for(j=0;j<k2;j++)for(i=0;i<k1;i++)if(s1[i]==s2[j]) s1[i]='\0';j=0;for(i=0;i<k1;i++)if(s1[i]!='\0'){ s1[j]=s1[i]; j++; }s1[j]='\0';puts(s1);return 0;}10.5 单词有多少用空格或换行分开的字符串称为单词。
输入多行字符串,直到遇到了单词 "stop" 时才停止。
最后输出单词的数量。
用于分割单词的空格或换行可能多于1个。
输入:多个字符串输出:单词的数量#include<stdio.h>#include<string.h>{char s[20];int i,n=0;for(i=0;;i++){ scanf("%s",s); /*scanf遇空格或换行则存入下一个s[20]*/n++; /*不能gets(s),它对换行空格没反应,都存入同一s[],无法strcmp*/if(strcmp(s,"stop")==0) break;}printf("%d\n",n-1);return 0;}10.6 在指定位置插入字符串输入两个字符串 s1 、 s2 和 s1 中任意字符 k ,在 s1 中的指定字符 k 第一次出现的位置处插入字符串 s2 并输出。
输入:两个字符串 s1 、 s2 和 s1 中任意字符 k输出:插入后的字符串 s1#include<stdio.h>#include<string.h>int main(){char s1[50],s2[50],s3[50],k;int i,j,a,b,n=-1;gets(s1); gets(s2);a=strlen(s1); b=strlen(s2);scanf("%c",&k);for(i=0;i<a;i++){ n++;if(s1[i]==k) break;}for(i=0;i<n;i++)s3[i]=s1[i];for(i=n;i<n+b;i++)s3[i]=s2[i-n];for(i=n+b;i<a+b;i++)s3[i]=s1[i-b];s3[i]='\0';puts(s3);return 0;}10.7 Your Ride Is HereIt is a well-known fact that behind every good comet is a UFO. These UFOs often come to collect loyal supporters from here on Earth. Unfortunately, they only have room to pick up one group of followers on each trip. They do, however, let the groups know ahead of time which will be picked up for each comet by a clever scheme: they pick a name for the comet which, along with the name of the group, can be used to determine if it is a particular group's turn to go (who do you think names the comets?). The details of the matching scheme are given below; your job is to write a program which takes the names of a group and a comet and then determines whether the group should go with the UFO behind that comet.Both the name of the group and the name of the comet are converted into a number in the following manner: the final number is just the product of all the letters in the name, where "A" is 1 and "Z" is 26. For instance, the group "USACO" would be 21 * 19 * 1 * 3 * 15 = 17955. If the group's number mod 47 is the same as the comet's number mod 47, then you need to tell the group to get ready! (Remember that "a mod b" is the remainder left over after dividing a by b; 34 mod 10 is 4.)Write a program which reads in the name of the comet and the name of the group and figures out whether according to the above scheme the names area match, printing "GO" if they match and "STAY" if not. The names of the groups and the comets will be a string of capital letters with no spaces or punctuation, up to 6 characters long.INPUT FORMATCOMETQHVNGATOUTPUT FORMATA single line containing either the word "GO" or the word "STAY".#include<stdio.h>#include<string.h>void main(){char a[7],b[7];int i,pa=1,pb=1;gets(a);gets(b);i=0;while(a[i]!='\0'){pa=pa*(a[i]-'A'+1)%47;i++;}i=0;while(b[i]!='\0'){pb=pb*(b[i]-'A'+1)%47;i++;}if(pa==pb)printf("GO\n");elseprintf("STAY\n");}10.8 大数相加问题描述:编写C程序,它能以字符串形式读入两个无符号正整数m和n,计算并输出这两个整数之和输入格式:输入由两行组成,第一行为无符号整数m,第二行为无符号整数n,且m和n的值最长25位输出格式:输出为一行,即两个无符号整数m和n之和#include<stdio.h>#include<string.h>int main(){char a[5001],b[5001];int s1[5001],s2[5001],k,n=0;int ans[5001];int c,alen,blen,i,maxlen,minlen;scanf("%s%s",&a,&b);alen=strlen(a);blen=strlen(b);maxlen = alen > blen ? alen : blen; memset(s1,0,sizeof(s1));memset(s2,0,sizeof(s2));for( i=alen-1;i>=0;i--)s1[alen-i]=a[i]-'0';for( i=blen-1;i>=0;i--)s2[blen-i]=b[i]-'0';memset(ans,0,sizeof(ans));for(i=1;i<=maxlen;i++){ans[i] += s1[i] + s2[i];if(ans[i]>9){if(i==maxlen)maxlen++;ans[i+1]++;ans[i]-=10;}}for( i=maxlen;i>=1;i--)printf("%d",ans[i]);printf("\n");if (k!=c)printf("\n");return 0;}10.9 字符串重排列判断一个字符串是否可以由另一个字符串通过重排字符而得到。