第一篇:c语言上机实习填空题
班级:学号:姓名:
填空题
第一题
题目要求(11)
下列给定程序中,函数fun的功能是:将形参中,各位偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。例如,输入一个整数27638496,中。.
#include
int fun(char*source, char*target){FILE*fs,*ft;charch;/**********found**********/if((fs=fopen(source,“w”_))==NULL)return 0;
if((ft=fopen(target, “w”))==NULL)函数返回值为64862
#include
unsigned long fun(unsigned longn){ unsigned longx=0;intt;while(n){ t=n%10;
/**********found**********/if(t%2==0)
/**********found**********/x=10*x+t;
/**********found**********/n=n/10;}returnx;} main()
{ unsigned longn=-1;while(n>99999999||n<0){
printf(“Please
input(0 ”);scanf(“%ld”,&n);} printf(“nThe result is: %ldn”,fun(n));} 1、做题分析: ① 本题考查:已知某数,如何求该数各个 位数值,已知各个位数值,如何表示该数;除法运算。将十位取出数以用于下次运算故改为n/10 第二题(11) 1、题目要求 .给定程序的功能是;调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值是1,失败时返回值为O。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname return 0; printf(“nThe data in file :n”);ch=fgetc(fs); /**********found**********/while(!feof(fs)){putchar(ch); /**********found**********/fputc(ch,ft);ch=fgetc(fs);} fclose(fs);fclose(ft);printf(“nn”);return1;} main(){ char sfname[20] =“myfile1”,tfname[20]=“myfile2”; FILE*myf;inti;charc;myf=fopen(sfname,“w”);printf(“nThe original data :n”);for(i=1;i<30;i++){ c='A'+rand()%25;fprintf(myf,“%c”,c);printf(“%c”,c);} fclose(myf);printf(“nn”);if(fun(sfname,tfname))printf(“Succeed!”); elseprintf(“Fail!”);} 答案:【1】“r” 【2】fs【3】ft 2、做题分析 ① 对数据文件部分的知识掌握不透彻。首 先以读的方式打开文件看看是否有数据在里面,然后再进行操作,故应将“w”改为“r”。第三题 班级:学号:姓名: 1、题目要求 给定程序的功能是:从键盘输入若干行文件(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。#include {FILE*fp; if((fp=fopen(“myfile4.txt”,“w”))==NULL) {printf(“ open fail!n”);exit(0);} WriteText(fp);fclose(fp); if((fp=fopen(“myfile4.txt”,“r”))==NULL) {printf(“ open fail!n”);exit(0);} ReadText(fp);fclose(fp);} /**********found**********/ void WriteText(FILE___1___){charstr[81]; printf(“nEnter string with-1 to end :n”);gets(str); while(strcmp(str,“-1”)!=0){ /**********found**********/fputs(___2___,fw);fputs(“n”,fw);gets(str);} } void ReadText(FILE*fr){charstr[81]; printf(“nRead file and output to screen :n”); fgets(str,81,fr);while(!feof(fr)){ /**********found**********/printf(“%s”,___3___);fgets(str,81,fr);} } 2、做题分析 答案:【1】*fw【2】str【3】str ①本题考查:函数定义以及文件指针;fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针)。 【解题思路】 填空1:定义函数,函数的形参是一个文件类型的指针。 填空2:此处考查fputs函数的形式,应填入str。 填空3:依据printf函数的格式,输出字符串内容,即printf(“%s”,str)。 一、实验目的 1.能够描述VC++6.0开发平台的使用过程,学会运行一个C程序的基本步骤,包括编辑、编译、链接和运行。 2.能够使用算术表达式和赋值表达式书写正确的语句。3.能够使用输入/输出函数编写简单的程序。 二、实验环境 (调试程序所使用的软硬件环境)软件环境:VC++6.0 硬件环境:宏基 Intel 奔4 主频 2.8GHz,内存256MB 三、实验内容、结果及分析 1、题目1)求华氏温度150°F对应的摄氏温度。计算公式如下: 55cf32 其中:c表示摄氏温度,f表示华氏温度。源程序清单:(调试好的源程序代码)// work1.cpp : Defines the entry point for the console application.// #include “stdafx.h” #include } 主要标识符说明:(源程序中主要标识符含义说明)Double为双精度类型变量名表 实验结果:(程序运行结果)double f,c;cout<<“输入华氏温度,按Enter执行”< 实验中遇到的问题及解决的方法 源代码的粘贴出现乱码 解决:从Cpp文件中粘消除格式。 2、题目 已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均分。 源程序清单:(调试好的源程序代码)// work2.cpp : Defines the entry point for the console application.// #include “stdafx.h” #include double a,b,c,average;cout<<“请按顺序输入数学、英语、计算机三科成绩。”< 实验中遇到的问题及解决的方法 3、题目 当n为152时,分别求出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 源程序清单:(调试好的源程序代码)// work3.cpp : Defines the entry point for the console application.// #include “stdafx.h” #include int n,digit1,digit2,digit3;cout<<“请输入一个三位数n(100﹏999)”< //求个位数字 digit2=n/10%10; //求十位数字 digit3=n/100%10; //求百位数字 cout<<“个位数字(digit1)”< 实验中遇到的问题及解决的方法 四、实验体会(心得、收获) C语言对我们来说是一个崭新的学科。我想学习C语言就像学习其他学科一样,需要我们用心的去学习。它也是我们交流的一种新的方式。只不过是人机之间的。随着科学的进步,与社会的发展,计算机显得尤为重要。C语言又是学习计算机的基础,所以我们更应该该好好的学习C语言。通过这节实验课,我们学到了如何运用6.0来编辑代码,运行我自己编写的程序。虽然过程中会有错误,但在这犯错的过程中我学到了我所不知道的。在这纠错的过程中,我来了解到我还有很多的地方不足。如忘记写分号等。其实就错就是个学习的过程。 对于实验上的问题,如粘源代码时,就应先用记事本打开源代码,就可以。而不是在程序中直接粘,这样就不会出现乱码。还有,就是注意小处的错误,如分号和注意换行的使用。 苏州科技大学上机实习报告 程序设计语言(C语言) 实验一: Visual C++实验环境 一、实验任务 实验一 二、实验目的 1.了解C程序结构,熟悉VC++ 6.0开发环境。 2.熟悉在VC++ 6.0开发环境中编辑、编译、连接、运行和调试C语言程序。3.通过运行简单的C语言程序,初步连接C语言源程序的特点。 三、实验环境 硬件:PC兼容机 CPU Core i5,内存4GB; 操作系统:中文版 Windows 7; 应用软件 Visual C++ 6.0程序开发环境。 四、实验准备及作业提交方法 1.提交位置 在计算机硬盘(E盘)上新建以学生“学号姓名”命名的文件夹,本次实验学生编写的程序文件先保存到上述文件夹中,待上机实验结束时,将文件夹通过校园网络提交到规定服务器位置上。2.提交内容 本次作业需提交2类文件:.c文件、上机实习报告.doc 五、实验内容(因实验内容较多,本实验报告中仅体现部分内容) 1.编写一个程序,输出以下信息: ***************************** Welcome to the world of C! ***************************** 【源程序代码】 电子与信息工程学院上机实习报告 第1页 2.编写程序求两数之和 【源程序代码】 3. 编写程序。 【源程序代码 六、思考与实践 6.【修改后源程序代 】 码】 7.【源程序代码】 七、实验分析总结 有时候多个错误只要改第一个就行了。不能忘记尾部的‘;’。C语言要敢于动手尝试,不能逃避困难。 班级:姓名:学号: 第一题 一、题目要求(11题) #include STRECfun(STREC*a, char *b){ int i; STREC str={“ ”,-1};/*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/ for(i=0;i if(strcmp(a[i].num,b)==0)/*找到指定学号的学生数据*/ str=a[i]; str=a[i]; return str;/*返回学生记录*/ }} main(){STREC s[N]={{“GA005”,85},{“GA003”,76},{“GA002”,69},{“GA004”,85},{“GA001”,91},{“GA007”,72},{“GA008”,64},{“GA006”,87},{“GA015”,85},{“GA013”,91},{“GA012”,64},{“GA014”,91},{“GA011”,77},{“GA017”,64},{“GA018”,64},{“GA016”,72}};STRECh;charm[10]; inti;FILE *out; printf(“The original data:n”);for(i=0;i {if(i%4==0)printf(“n”); printf(“%s %3d”,s[i].num,s[i].s);} printf(“nnEnter the number:”);gets(m);h=fun(s,m); printf(“The data :”); printf(“n%s%4dn”,h.num,h.s);printf(“n”); out = fopen(“out.dat”,“w”);h=fun(s,“GA013”); fprintf(out,“%s%4dn”,h.num,h.s);fclose(out);} 第二题 编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程COS(x)-x=O的一个实根。Xn+1=COS(Xn)。迭代步骤如下:(1)取x1初值为0.0; (2)xO=xl,把xl的值赋给xO:(3)x1=COS(x0),求出一个新的x1;(4)若x0-xl的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2); (5)所求x1就是方程COS(x)-x=0的一个实根,作为函数值返回。程序将输出结果 Root=0.739085。#include printf(“Root=%fn”,fun());} 第三题 一、题目要求 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符 串中的前导*号全部移到字符串的尾部。例如,若字符串中的内容为*******A*BC*DEF*G**** 移动后,字符串中的内容应当是A*BC*DEF*G***********。在编写函数时,不得使用C语言提供的字符串函数。 #include { char s[81],*p;int n=0; printf(“enter a string:n”);gets(s);fun(s); printf(“the string after moving:n”);puts(s);} 一、做题分析 【参考答案】 voidfun(char *a){ int i=0,n=0;char *p;p=a; while(*p=='*')/*判断*p是否是*号,并统计*号的个数*/{ n++;p++;} while(*p)/*将前导*号后的字符传递给a*/{ a[i]=*p;i++;p++;} while(n!=0){ a[i]='*';i++;n--;} a[i]=' ';} 二、做题分析 【考点分析】 本题考查:移动字符串中指定字符的位置,一般采用while循环语句,通过指针型变量来完成。 【解题思路】 函数fun的功能:将字符串中的前导*号全部移到字符串的尾部。本题解题思路:(1)定义一个指针并指向字符串的首地址;(2)利用循环语句找出字符串的前导*号的个数n;(3)利用循环语句把剩余的字符拷贝到另一个字符串中;(4)在字符串的末尾接上n个*号。 第四题 题目要求 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不只一个,函数返回分数最高的学生的人数。 #include int fun(STREC *a, STREC *b){ } main(){STREC s[N]={{“GA05”,85},{“GA03”,76},{“GA02”,69},{“GA04”,85},{“GA01”,91},{“GA07”,72},{“GA08”,64},{“G A06”,87},{“GA015”,85},{“GA013”,91},{“GA012”,64}, {“GA014”,91},{“GA011”,77},{“GA017”,64}, {“GA018”,64},{“GA016”,72}}; STREC h[N];int i,n;FILE *out;n=fun(s,h); printf(“the %d highest score :n”,n);for(i=0;i printf(“%s%4dn”,h[i].num,h[i].s);printf(“n”); out=fopen(“out15.dat”,“w”);fprintf(out, “%dn”,n);for(i=0;i 二、做题分析 1、应该先用for循环找出这些学生中成绩最高的然后再利用for循环结构把和最高成绩一样的找出来并用j记录最高成绩的个数。注:本题主要考察结构体的应用。故函数如下intfun(STREC*a, STREC *b){ int i,j=0,max=a[0].s;/*找出最大值*/for(i=0;i if(max for(i=0;i if(max==a[i].s)b[j++]=a[i]; /*找出成绩与max相等的学生的记录,存入结构体b中*/return j; /*返回最高成绩的学生人数*/} 第五题 一、题目要求 #in假定输入的字符串中只包含字母和*号。 请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时,不得使用c语言提供的字符串函数。例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是****ABCDEFG。 #include printf(“enter astring:n”);gets(s);fun(s); printf(“the string after deleted:n”);puts(s);} 二、做题分析 1、首先判断*p前几个字符中中是否含有*,记录*截止的位置,然后再判断字符数组中其他的英文字符。故函数程序如下 Int i=0; char *p=a; while(*p&&*p==’*’){a[i]=*p;i++;p++;} while(*p){if(*p!=’*’){a[i]=*p;i++;} p++;} 第六题 一、题目要求(18) 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中“a”到“z”26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 0 0O 0 0 O O 0 0 0 0 0 0 0 0 0 0 0 O #include void fun(char *tt, int pp[]){} main() {char aa[1000];intbb[26], k, n;clrscr(); printf(“nPlease entera char string:”);scanf(“%s”, aa);fun(aa, bb); for(k = 0;k < 26;k++)printf(“%d ”, bb[k]); printf(“n”);} 一、做题分析 本题考查:for循环语句,注意循环变量取值范围以及循环体语句作用。数组元素初始化和赋值操作。if语句条件表达式,需注意条件表达式的逻辑运算。字符串结束标识 要求统计在tt所指字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指数组中。首先for循环语句体中初始化pp数组中分别用来统计26个字母的个数。再使用循环判断语句对tt所指字符串中的字符进行逐一比较操作,同时存入相对应的pp数组中。故程序如下 void fun(char *tt, int pp[]){ int i; for(i=0;i<26;i++)pp[i]=0; for(;*tt!=' ';tt++) if(*tt>='a'&&*tt<='z')pp[*tt-'a']++;} 上机练习题 1.输入一个不超过五位的正整数,输出其逆数。例如输入12345,输出应为54321。 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ long n;int ww,qw,bw,sw,gw;printf(“Please input:n”);scanf(“%ld”,&n);while(n<=0||n>99999){ printf(“nThe number is 2 little or too large.Retry please!n”); scanf(“%ld”,&n);} if(n>=10000&&n<=99999){ ww=n/10000;qw=n/1000%10;bw=n/100%10;sw=n/10%10;gw=n%10;printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%d%d%dn”,gw,sw,bw,qw,ww);} else if(n>=1000&&n<=9999){ qw=n/1000; bw=n/100%10; sw=n/10%10; gw=n%10; printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%d%dn”,gw,sw,bw,qw); } else if(n>=100&&n<=999){ bw=n/100; sw=n/10%10; gw=n%10; printf(“The old number is:%ldn”,n);printf(“The new number is:%d%d%dn”,gw,sw,bw);} else if(n>=10&&n<=99) { sw=n/10; gw=n%10; printf(“The old number is:%ldn”,n); printf(“The new number is:%d%dn”,gw,sw); } else printf(“The old number equals the new number:%ld”,n); } 2.计算1+2+3„+n的值,n是从键 盘输入的自然数。 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int n,i;long sum=0; printf(“1+2+3+....+nn”);printf(“Please input n:n”); scanf(“%d”,&n);for(i=1;i<=n;i++){ sum+=i; } printf(“sum=%ld”,sum);} 3.从终端(键盘)读入20个数据 到数组中,统计其中正数的个数,并计算这些正数之和。、/* Note:Your choice is C IDE */ #include “stdio.h” #define N 20 main(){ int a[N],i,sum=0,count=0;printf(“Please input numbers :n”); for(i=0;i { scanf(“%d”,&a[i]); if(a[i]>0) { sum+=a[i]; count++; } } printf(“count=%d,sum=%d”,count,sum);} 4.从终端(键盘)将5个整数输入到数组a中,然后将a逆序复制到数组b中,并输出b中各元素的值。 /* Note:Your choice is C IDE */ #include “stdio.h” #define N 5 main(){ int a[N],b[N],i;printf(“Please input numbers:n”);for(i=0;i b[N-i-1]=a[i];} printf(“nThe old numbers are:n”);for(i=0;i printf(“%-4d”,a[i]);printf(“nThe new numbers are:n”);for(i=0;i printf(“%-4d”,b[i]);} 5.要将五张100元的大钞票,换成等值的50元,20元,10元,5元一张的小钞票,每种面值至少1张,编程输出所有可能的换法,程序应适当考虑减少重复次数。/* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,j,k,n;for(i=1;i<=10;i++) for(j=1;j<=25;j++) for(k=1;k<=50;k++) for(n=1;n<=100;n++) if(i*50+j*20+k*10+n*5==500) printf(“num50=%d,num20=%d,num10=%d,num5=%dn”,i,j,k,n);} 6.求n以内(不包括n)同时能被 3和7整除的所有自然数之和的平方根s,n从键盘输入。例如若n为1000时,函数值应为:s=153.909064。 /* Note:Your choice is C IDE */ #include “stdio.h” #include “math.h” main() { int n,s,i;float sum=0;printf(“Please input n:n”); scanf(“%d”,&n);while(n<=0){ printf(“nError input.Retry please:n”); scanf(“%d”,&n);} for(i=1;i if(i%3==0&&i%7==0) sum+=i;printf(“The number is:%4.2f”,sqrt(sum));} 7.一辆卡车违反交通规则,撞人后 逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索找出车号。/* Note:Your choice is C IDE */ #include “stdio.h” #include “math.h” main(){ int i,qw,bw,sw,gw; for(i=1122;i<=9988;i++){ if(sqrt(i)!=(int)sqrt(i)) continue; qw=i/1000; bw=i/100%10; sw=i/10%10; gw=i%10; if(qw==bw&&sw==gw) { printf(“nThe number is:%dn”,i); break; } } 8.输入1~10之间的一个数字,输出它对应的英文单词。 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int n;printf(“Please input n:n”);scanf(“%d”,&n);while(n<1||n>10){ printf(“Error input!Retry please:n”); scanf(“%d”,&n);} switch(n){ case 1:printf(“One!”);break; case 2:printf(“Two!”);break; case 3:printf(“Three!”);break; case 4:printf(“Four!”);break; case 5:printf(“Five!”);break; case 6:printf(“Six!”);break; case 7:printf(“Seven!”);break; case 8:printf(“Eight!”);break; case 9:printf(“Nine!”);break; case 10:printf(“Ten!”);break;} } 9.个位数为6且能被3整除但不能被5整除的三位自然数共有多少个,分别是哪些? /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,count=0; for(i=106;i<596;i=i+10){ if(i%3==0&&i%5!=0) { printf(“%-4d”,i); count++; } } printf(“count=%-4d”,count);} 10.用自然语言描述程序逻辑如下,试写程序。 ① 设置环境; ② 定义变量i、j、s,以及用于放置结果的变量sum,并令sum初值为0; ③ i=1; ④ 如果i≤100,则转⑤,否则转⑧; ⑤ 令s=0,求前i个自然数之和,并放于变量s之中; ⑥ sum=sum+s; ⑦ i增加1,转④; ⑧ 输出和sum,结束。 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ int i,j; long s=0,sum=0; printf(“1+1+2+1+2+3+1+2+3+4+....1+2+3+..+nn”);i=1; while(i<=3){ s+=i;sum+=s;i++;} printf(“sum=%ld”,sum);} 11.用自然语言描述的程序逻辑为: ① 设置环境; ② 定义变量i、flag和password,并令flag=0,i=0; ③ 用户回答口令,将其赋于password变量; ④ 口令正确?如果是,则flag=1,转⑥。否则转⑤; ⑤ 回答三次口令了吗?如果没有,计数器加1后(i++),转③,否则转⑥; ⑥ 根据flag之值输出相应信息。 /* Note:Your choice is C IDE */ #include “stdio.h” #include “string.h” #define N 6 main(){ int i=0,flag=0;char password[N];printf(“The password is:123456n”);while(i<3){ gets(password); if(strlen(password)!=6) { printf(“The string length is wrong!Retry please!n”); i++; continue; } if(strcmp(“123456”,password)==0) {flag=1;break;} else { printf(“Wrong input!Retry please!n”);i++;} } if(flag==1)printf(“Right password!n”);else printf(“Wrong password!n”);} 12.用自然语言描述的程序逻辑如 下: ① 设置环境; ② 定义变量digit、x、y分别表示原始数、原始数的个位数和逆数; ③ 输入原始正整数x; ④ 从x中分解出个位数字digit; ⑤ 合并个位digit至逆数y中; ⑥ 原始数x缩小10倍:x=x/10; ⑦ 如果x非零,则转④; ⑦ 输出逆数y,结束 /* Note:Your choice is C IDE */ #include “stdio.h” main(){ long digit,x,y;/*个位数、原始数、逆数*/ printf(“Please input the old number:n”);scanf(“%ld”,&x);digit=x%10;y=digit;while(x!=0){ x=x/10; digit=x%10; y=y*10+digit;} printf(“x=%ld,y=%ld”,x,y/10);} 13.输入某三角形的三个边的长度,判断出这是个什么三角形(等腰、等边、任意,或不能构成)。/* Note:Your choice is C IDE */ #include “stdio.h” main(){ float a,b,c,flag;/*flag=0不能,flag=1等边,flag=2等腰,flag=3任意*/ printf(“Please input angles:n”); scanf(“%f,%f,%f”,&a,&b,&c);if(a+b<=c||a+c<=b||b+c<=a)flag=0;else if(a==b&&b==c)flag=1;else if(a==b||b==c||c==a) flag=2; else flag=3;if(flag==0)printf(“nCan not!n”);if(flag==1)printf(“nDeng Bian.n”);if(flag==2)printf(“nDeng Yao.n”);if(flag==3)printf(“nPu tong.n”);} 14.输入10个数,分别统计其中正数、负数、零的个数。#include “stdio.h” #define N 10 main(){ int a[N];int i,count1=0,count2=0,count3=0;/*count1记录正数个数,count2记录负数个数,count3记录0的个数*/ printf(“Please input numbers:n”);for(i=0;i scanf(“%d”,&a[i]); if(a[i]>0)count1++; if(a[i]<0)count2++; if(a[i]==0)count3++;} printf(“count1=%-4d,count2=%-4d,count3=%-4d”,count1,count2,count3);} 15.先随机产生N个三位自然数输出,然后再输出其中同时是3、5、7倍数的数。(设N为100)/* Note:Your choice is C IDE */ #include “stdio.h” #define N 100 #include int a[N],i;printf(“Please input numbers:n”);randomize(); for(i=0;i { a[i]=random(900)+100;printf(“%-4d”,a[i]);} printf(“n--------------------n”); printf(“n3,5,7:n”);for(i=0;i if(a[i]%3==0&&a[i]%5==0&&a[i]%7==0) printf(“%-4d”,a[i]);} 16.用for编程找出100~200中的完 全平方数。 #include “stdio.h” #include “math.h” main(){ int i; for(i=100;i<=200;i++)if(sqrt(i)==i%100) printf(“%-4d”,i);} 17.从终端输入三个正实数,判断这 三个数能否构成直角三角形。#include “stdio.h” main(){ float a,b,c,flag;/*flag=0不能,flag=1能*/ printf(“Please input angles:n”); scanf(“%f,%f,%f”,&a,&b,&c);while(a<=0||b<=0||c<=0){ printf(“Wrong input!Retry please:n”); scanf(“%d,%d,%d”,&a,&b,&c);} if(a+b<=c||b+c<=a||a+c<=b)flag=0;else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==a*a+b*b) flag=1; else flag=0;if(flag==1)printf(“nCan!”);else printf(“nCan not!”);} 18.输入一行字符,统计其中有多少个字母(包括大写字母和小写字母)。 /* Note:Your choice is C IDE */ #include “stdio.h” #define N 10 #include “stdlib.h” #include “ctype.h” #include “string.h” main(){ char c[N];int i,count=0;gets(c);i=0;while(i!=strlen(c)){ if(isupper(c[i])||islower(c[i])) count++;i++;} printf(“count=%-4d”,count);getch();} 19.输入一个字串,判断它是否是对称串。如”abcdcba”是对称串,”123456789”不是。 /* Note:Your choice is C IDE */ #include “stdio.h” #include “string.h” #include “ctype.h” #include “stdlib.h” #define N 10 main(){ char a[N],b[N],i; printf(“Please input the string:n”);gets(a); if(strlen(a)>N) { printf(“Wrong input!Retry please!n”); gets(a); } strcpy(b,a);strrev(a); if(strcmp(a,b)==0) printf(“nYes!n”);else printf(“nNo!n”);} 20.随机产生N个大写字母输出,然 后统计其中共有多少个元音字符。(设N为200) /* Note:Your choice is C IDE */ #include “stdio.h” #include int c[N],i,count=0;randomize();for(i=0;i c[i]=random(27)+65;printf(“ %c”,c[i]); if(c[i]=='A'||c[i]=='E'||c[i]=='I'||c[i]=='O'||c[i]=='U')count++;} printf(“n----------------------n”); printf(“ncount=%-4d”,count);} 找出三位自然数中的所有素数,要求判断x素数用自定义函数data(x)实现。 #include “stdio.h” int data(int x);main(){ int i,flag=0;/*1是,0否*/ for(i=101;i<=999;i++){ flag=data(i);if(flag==1)printf(“%-4d”,i);} } int data(int x){ int i;for(i=2;i printf(“n----------------n”); for(i=1;i<=n;i++){ satr(m); printf(“n”);} } void satr(int m){ int i;for(i=1;i<=m;i++) printf(“#”);} 22.若ax2+bx+c=0有实根,则求之。#include “stdio.h” #include “math.h” main(){ int a,b,c; float derta,x1,x2;printf(“Please input a,b,c:n”); printf(“a=”);scanf(“%d”,&a);printf(“b=”); scanf(“%d”,&b);printf(“c=”);scanf(“%d”,&c); derta=b*b-4*a*c;if(derta<0) printf(“NO!n”);if(derta==0) { printf(“One!n”); x1=-b/(2*a); x2=x1; printf(“x=%-4.2f”,x1); } if(derta>0) { printf(“Two!n”); x1=(-b+sqrt(derta))/(2*a); x2=(-b-sqrt(derta))/(2*a);printf(“x1=%-4.2f,x2=%-4.2f”,x1,x2); } } 23.从键盘输入两个字串,判断它们 是否相同。 #include “stdio.h” #include “string.h” #define N 20 main(){ char c1[N],c2[N]; printf(“Please input two string below:n”);gets(c1);gets(c2); printf(“--------------------n”); printf(“The answer is:”);if(strcmp(c1,c2)==0) printf(“Equal!n”); else printf(“Not equal!n”);} 24.从键盘输入两个字串,输出其中较短的那个字串,并输出它的长度。 #define N 20 #include “stdio.h” #include “string.h” main(){ char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);printf(“--------------------n”);printf(“The answer is:”);if(strlen(c1)==strlen(c2)){ puts(c1); puts(c2); printf(“The length is:%dn”,strlen(c1));} if(strlen(c1) printf(“The length is:%dn”,strlen(c1));} if(strlen(c1)>strlen(c2)){ puts(c2); printf(“The length is:%dn”,strlen(c2));} 25.从键盘输入长度不等的两个字串,将短串连接于长串之后输出。 #include “stdio.h” #include “string.h” #define N 20 main(){char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);while(strlen(c1)==strlen(c2)){ printf(“Wrong input!Retry please:n”);gets(c1);gets(c2);} printf(“--------------------n”); printf(“The answer is:”);if(strlen(c1) if(strlen(c1)>strlen(c2))puts(strcat(c1,c2));} 26.从键盘输入长度不等的两个字 串,将长串连接于短串之后输出 #include “stdio.h” #include “string.h” #define N 20 main() { char c1[N],c2[N]; printf(“Please input two string below:n”);gets(c1);gets(c2); while(strlen(c1)==strlen(c2)){ printf(“Wrong input!Retry please:n”); gets(c1); gets(c2);} printf(“--------------------n”); printf(“The answer is:”); if(strlen(c1) puts(strcat(c1,c2)); if(strlen(c1)>strlen(c2)) puts(strcat(c2,c1));} 27.随机产生N个两位自然数,降序 排列后输出。(设N为20)#include “stdio.h” #include “stdlib.h” #include “time.h” #define N 20 main() { int a[N],i,j,temp;randomize(); for(i=0;i a[i]=random(900)+100;for(i=0;i for(j=i+1;j if(a[j]>a[i]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i=0;i printf(“%-4d”,a[i]);} 28.从键盘输入两个字串,输出其中较长的那个字串,并输出它的长度。 #define N 20 #include “stdio.h” #include “string.h” main(){ char c1[N],c2[N];printf(“Please input two string below:n”);gets(c1);gets(c2);printf(“--------------------n”);printf(“The answer is:”);if(strlen(c1)==strlen(c2)){ puts(c1); puts(c2); printf(“The length is:%dn”,strlen(c1));} if(strlen(c2) printf(“The length is:%dn”,strlen(c1));} if(strlen(c2)>strlen(c1)){ puts(c2); printf(“The length is:%dn”,strlen(c2));} } 29.从键盘输入10个战士的身高,输出平均身高,并找出哪些身高低于平均身高。#include “stdio.h” #define N 11 main() { float a[N],sum=0;int i; printf(“Please input heigths:n”); for(i=0;i scanf(“%f”,&a[i]); sum+=a[i];} a[N-1]=sum/(N-1);printf(“The average is:%-6.2fn”,a[N-1]); printf(“---------------------n”); printf(“The answer are:n”); for(i=0;i printf(“%-8.2f”,a[i]);} 30.从键盘输入10个战士的身高,输出平均身高,并找出哪些身高高于平均身高。#include “stdio.h” #define N 11 main() { float a[N],sum=0;int i; printf(“Please input heigths:n”); for(i=0;i scanf(“%f”,&a[i]); sum+=a[i];} a[N-1]=sum/(N-1);printf(“The average is:%-6.2fn”,a[N-1]); printf(“---------------------n”); printf(“The answer are:n”); for(i=0;i printf(“%-8.2f”,a[i]);} 31.从键盘输入10个战士的身高,输出最高、最低的身高 #include “stdio.h” #define N 10 main(){ float a[N],min=99999,max=-99999;int i;printf(“Please input heigths:n”);for(i=0;i scanf(“%f”,&a[i]); printf(“---------------------n”);for(i=0;i max=a[i];if(a[i] min=a[i];} printf(“max=%-6.2f,min=%-6.2f”,max,min);}。 32.“百钱百鸡”问题。百钱买百鸡,鸡翁一值钱三,鸡母一值钱二,鸡雏三值钱一,问鸡翁、鸡母、鸡雏各几何? #include “stdio.h” main(){ int jw,jm,jc;/*公鸡最多100/3=33只,母鸡最多100/2=50只,小鸡最多300只*/ for(jw=1;jw<=33;jw++) for(jm=1;jm<=50;jm++) for(jc=1;jc<=300;jc++)if(jw*3+jm*2+jc/3==100&&jw+jm+jc==100)printf(“JW=%d,JM=%d,JC=%dn”,jw,jm,jc);} 33.有三个小孩,一个比一个大2岁,已知其年龄之和为39,问这三个小孩各几岁? #include “stdio.h” main(){ int a,b,c; for(a=1;a<=20;a++) for(b=1;b<=20;b++) for(c=1;c<=20;c++) if(a+2==b&&b+2==c&&a+b+c==39) printf(“The ages are:%-4d%-4d%-4d”,a,b,c);} 34.键盘输入长方体的长宽高l、w、h,求其体积及表面积。要求用自定义函数val(l,w,h)计算长方体的体积和表面积,计算结果使用全局变量带回主函数。#include “stdio.h” float l,w,h,v,s; void val(float l,float w,float h);main(){ printf(“Please input l&w&h:n”); printf(“l=”);scanf(“%f”,&l);printf(“w=”);scanf(“%f”,&w);printf(“h=”);scanf(“%f”,&h);val(l,w,h);} void val(float l,float w,float h) { v=l*w*h; s=2*l*w+2*w*h+2*h*l; printf(“v=%-6.2f,s=%-6.2f”,v,s);} 35.计算:1/2+1/4+„„+1/n,设n 是由键盘输入的正偶数。#include “stdio.h” main() { int n,i; float sum=0;printf(“Please input n:n”); scanf(“%d”,&n);while(n%2!=0) { printf(“Wrong input!Try again:n”); scanf(“%d”,&n);} for(i=2;i<=n;i=i+2)sum+=1.0/i;printf(“sum=%-6.2f”,sum); } 36.计算:1/1+1/3+„„+1/n,设n是由键盘输入的正奇数。#include “stdio.h” main(){ int n,i;float sum=0;printf(“Please input n:n”);scanf(“%d”,&n);while(n%2==0){ printf(“Wrong input!Try again:n”); scanf(“%d”,&n);} for(i=1;i<=n;i=i+2)sum+=1.0/i;printf(“sum=%-6.2f”,sum);} 37.计算:1/2-2/3+3/4-4/5„„,前100项。 #include “stdio.h” main(){ int i;float sum=0,d=1;for(i=1;i<100;i++){ sum+=i*d/(i+1); d=-d;} printf(“sum=%-6.2f”,sum);} 38.从终端输入3个数a、b、c,按从大到小的顺序输出 #include “stdio.h” main(){ int i,j,k,l;/*i,j,k,l分别代表甲乙丙丁。1偷0没偷*/ for(i=0;i<=1;i++) for(j=0;j<=1;j++) for(k=0;k<=1;k++) for(l=0;l<=1;l++)if(j+l==1&&j+k==1&&i+j==1&&l==0)} 39.公安人员审问四名窃贼嫌疑犯。 已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:甲说“乙没有偷,是丁偷的”,乙说“我没有偷,是丙偷的”,丙说“甲没有偷,是乙偷的”,丁说“我没有偷”。请根据这四人的答话判断谁是盗窃者。40.求 s=a+aa+aaa+aaaa+......+aa...a的值,其中a是1~9之间的一个数字,表达式项数从键盘输入(设不超过10项)。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 41.设N是一个四位数,它的9倍恰 好是其反序数,求N。反序数就是将整数的数字倒过来形成的整数。例如:1234的反序数是4321。 42.爱因斯坦出了一道这样的数学 题:有一条长阶梯,若每步跨2阶,则最后剩一阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯至少有多少阶? 43.输入任意一行字符,降序排列 之。 44.输入一行字符串,按如下规则加 密:如果是英文字母则大写变小写、小写变大写,对非英文字符则保持不变。试写加密程序。45.输入一行小写英文字母,按如下 规则加密:a→c、b→d、„、x→z、y→a、z→b,试写加密程序。 46.输入一行英文,已知各单词之间 用1个空格相隔(设第一个单词前没有空格),统计这行英文有多少个单词。 47.求1+12+123+„„前n项之和,其中n是从键盘输入的一个数字(1~9)。 48.小学生智商测试。让电脑随机出 十道100以内整数的加法题(10分/题),小学生从键盘回答答案,统计小学生最后得分。49.斐氏数列是公元13世纪数学家斐波拉契发明的。即:1,2,3,5,8,13,21,34,55,89,„„,输出其前15项。第二篇:C语言上机实习报告
第三篇:c语言上机实习报告
第四篇:c语言上机实习编程题
第五篇:C语言上机练习题