C语言复习资料3

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

大学程序设计技能训练(C)第3讲程序填空课程安排•9月21日(周二)第1次理论课,•9月28日(周二)第2次理论课,•10月12日(周二)第3次理论课,•10月19日(周二)第4次理论课,上课时间:18:00—20:30上机安排•9月26日第1次上机18:00—20:30)•10月15日(周五)第2次上机(18:00—20:30)•10月22日第3次上机(周五)(18:00—20:30)•10月26日模拟考试(18:00—20:30)•11月23日课程考试(18:30—20:30)上机安排•9月26日第1次上机18:00—20:30)•10月15日(周五)第2次上机(18:00—20:30)•10月26日实验(18:00—20:30)•11月16日模拟考试(18:00—20:30)•11月23日课程考试(18:30—20:30)二、程序填空题(本大题3道小题,每空2.5分,共30分)。1.程序运行时输出如图所示的数字倒三角形1234567123451231源程序:#includestdio.hvoidmain(){inti,j;____1____;for(i=1;i=4;i++){k=1;for(j=1;ji;j++)putchar('');/*输出空格*/for(j=9-2*i;j0;j--){printf(%d,k);____2____;}putchar(____3____);}}intkk++‘\n’考核点:变量的定义,循环控制变量的变化输出换行问题2.输入一行字符串,分别统计字符串中各元音字母(AEIOU)的个数(不分大小写)。源程序:#includestdio.hvoidmain(){chara[80];intn[5]={0,0,0,0,0};/*数组n存放各元音字母个数*/____1____;gets(a);intifor(____2____;a[i]!='\0';i++)switch(____3____){case'A':case'a':n[0]++;break;case'E':case'e':n[1]++;break;case'I':case'i':n[2]++;break;case'O':case'o':n[3]++;break;case'U':case'u':n[4]++;break;}i=0a[i]for(i=0;i5;i++)printf(%d\n,____4____);/*输出各元音字母个数*/}n[i]例输入一行字符,统计其中有多少个单词输入一字符串给stringi=0num=0word=0当((c=string[i])!=‘\0’)c=空格真真假假word=0word=1num=num+1i=i+1输出:numword==0字符数组和字符串例输入:Iamaboy.当前字符是否空格word原值新单词开始否word新值num值Iamaboy.当前字符=空格是否未出现新单词,使word=0,num不累加前一字符为空格(word==0),新单词出现,word=1,num加1前一字符为非空格(word==1),未出现新单词,num不变否0是11是1未01否0是12否1未12是1未02否0是13是1未03否0是14否1未14否1未14否1未14字符数组和字符串#includestdio.hmain(){charstring[81];inti,num=0,word=0;charc;gets(string);for(i=0;(c=string[i])!='\0';i++)if(c=='')word=0;elseif(word==0){word=1;num++;}printf(Thereare%dwords\intheline\n,num);}字符数组和字符串2、以下程序的功能是:按顺序读入10名学生4门课程的成绩,计算出每位学生的平均分并输出,请填空使程序完整。【程序2】#includestdio.hmain(){intn,k;floatscore,sum,ave;for(n=1;n=10;n++){____(1)_____;for(____(2)_____){scanf(%f,____(3)_____);sum+=score;}____(4)_____;printf(NO%d:%f\n,n,ave);}}#includestdio.hmain(){intn,k;floatscore,sum,ave;for(n=1;n=10;n++){sum=0.0;for(k=1;k=4;k++){scanf(%f,&score);sum+=score;}ave=sum/4.0;printf(NO%d:%f\n,n,ave);}}答案考核点:变量的定义,字符数组的基本操作利用一维数组计数3.程序功能:函数f的功能是从字符串中删除所有的数字字符,并返回删除的个数;主程序调用函数f删除字符串str中的数字字符,并输出删除的字符数。源程序:#includestdio.h#includestring.hintf(chars[]){inti=0;____1________;while(s[i]!='\0')if(s[i]='0'&&s[i]='9'){strcpy(s+i,s+i+1);count=count+1;/*count表示删除的数字字符数*/}else____2____;return____3____;}intcount=0i++countvoidmain(){charstr[80];intm;printf(输入字符串:);gets(str);m=____4____;printf(删除数字后的字符串:);puts(str);printf(删除的数字字符个数:%d,____5____);}f(str)m程序的功能是删除字符串s中与变量c相同的字符。#includestdio.h#includestring.hmain(){chars[80],c;inti,j;scanf(%s,s);getchar();c=getchar();for(i=j=0;s[i]!='\0';i++)if(s[i]!=c)s[j++]=s[i];s[j]='\0';puts(s);}以下程序输入一个10进制整数,转换为16进制,计算16进制的各个位数,并从高位到低位依次输出。如输入:687则输出:2AF例示说明:10进制687等于16进制2AF,输出时2、A、F中间包含空格源程序:#includestdio.hvoidmain(){inta[10],i,n;scanf(%d,&n);for(i=0;n0;i++){a[i]=____(1)____;n/=16;}for(i--;____(2)____;____(3)____)printf(%X,a[i]);}n%16i=0i--以下程序输入n和n个大于1的正整数,输出其中素数。如输入:51993113715则输出:191137例示说明:先输入n为5,再输入5个正整数,输出5个整数中的素数源程序:#includestdio.h#includestdio.hvoidmain(){intn,a,i,j,ct;scanf(%d,&n);for(i=0;____(1)____;i++){______(2)______;scanf(%d,&a);for(j=2;ja;j++)if(____(3)____)ct++;if(ct==0)printf(%d,a);}printf(\n);}inct=0a%j==0考核点:变量的定义,计数器清空函数定义与调用以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,再从键盘上输入一个成绩,将所有考试成绩达到或超过该成绩的学生数据写到新的文本文件“studentD.txt”。文件的最后一行为0表示学生数据结束。设文件student.txt的内容为101Zhao9558103Qian7581105Sun9991107Li80670运行时键盘输入:80则生成新文件studentD.txt的内容为:103Qian7581105Sun99910例示说明:student.txt中考试成绩在80分以上的Qian与Sun信息写到studentD.txt源程序:#includestdio.hvoidselect(FILE*fp1,FILE*fp2,intx){intnum,score1,score2;charname[20];while(1){num=0;fscanf(fp1,%d%s%d%d,&num,name,&score1,&score2);if(num==0)____(1)____;if(____(2)____)fprintf(fp2,%3d%-7s%3d%3d\n,num,name,score1,score2);}fprintf(fp2,0);}breakx=score2voidmain(){FILE*fp1,*fp2;intx;fp1=fopen(student.txt,r);fp2=fopen(studentD.txt,____(3)____);if(fp1==NULL||fp2==NULL){/*文件打开失败*/printf(FileOpenError!\n);return;}scanf(%d,&x);select(____(4)____);fclose(fp1);fclose(fp2);}wfp1,fp2,x程序填空的考核点•基本算法•数据结构基本算法•与函数相关的算法–判断素数–验证歌德巴赫猜想–求回文数–求两自然数的最大公约数和最小公倍数–分类统计问题–判别降序数–进制转换求回文数编一函数,功能为判断一字符串是否为回文。回文是指顺读和倒读都一样的字符串,如“deed”和“level”是回文。在主函数中对输入的5个字符串统计其中回文的个数。输出形式见图2.6.2。函数形式为:inthuiwen(chars[]);提示:构造一个逆序的字符串,思想:数组的首尾元素进行交换,其数组元素下标分别为0和n-1(n为字符串长度),接着对剩下的首尾元素进行交换,其数组元素下标分别为1和n-2,以此类推,即下标为i的数组元素和下标为n-i-1的数组元素交换,直到所有元素均交换或只剩一个元素为止,交换的次数为n/2。求回文数#includestring.h#includestdio.hinthuiwen(chars[]){inti,n=0;charch,s1[80];strcpy(s1,s);//原来的字符串保留在s1中while(s[n])n++;//求字符串长度for(i=0;in/2;i++)//构造逆序的字符串{ch=s[i];s[i]=s[n-i-1];s[n-i-1]=ch;}if(strcmp(s1,s)==0)return1;elsereturn0;}voidmain(){chars[5][80],ss[5][80];inti,count=0;printf(输入5个字符串:\n);for(i=0;i5;i++)gets(s[i]);for(i=0;i5;i++){strcpy(ss[i],s[i]);if(huiwen(ss[i])){count++;printf(%s,%sisY,s[i],ss[i]);}elseprintf(%s,%sisN,s[i],ss[i]);;}printf(\n回文个数:%d\n,count);}分类统计问题对输入一串字符,统计其中单词的个数、字母个数、数字个数。规定单词之间用一个空白符分开(空白符包括空格符、水平制表符、换行符)。分析:(1)统计单词的个数,可通过统计空白符的个数得到。(2)由于标准输入时会把空白符作为输入结束符,所以应使用gets函数取字符。#includestdio.h#includestring.hvoidmain(){intalpha=0,num=0,ch=0,word=0,i=0;cha

1 / 81
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功