C语言程序设计上机实习答案.doc_第1页
C语言程序设计上机实习答案.doc_第2页
C语言程序设计上机实习答案.doc_第3页
C语言程序设计上机实习答案.doc_第4页
C语言程序设计上机实习答案.doc_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验一1.标题:1、编写程序,在屏幕输出Happy New Year!时限:1000ms内存限制:10000K总时限:3000ms描述:编写程序,在屏幕输出“Happy New Year!”输入:无输出:Happy New Year!输入样例:无输出样例:Happy New Year!提示:1、可参考P35,例2.1完成;2、输出语句用printf(Happy New Year!n);实现,注意n的使用;3、代码中不能出现system(PAUSE);及getch();等语句。#include #include int main() printf(Happy New Year!n); return 0; 2.标题:2、比较两个整数的大小时限:1000ms内存限制:10000K总时限:3000ms描述:输入两个整数,比较它们的大小并输出其中最大的一个整数。输入:两个整数。输出:最大值输入样例:5 9输出样例:9提示:1、需要两个整型变量来接收数据的输入,可用int a, b;语句实现;2、用scanf(%d%d,&a, &b);语句接收用户输入的数据;3、用int Max (int x, int y);自定义函数实现两个整数的比较,返回最大值4、用printf (%dn, c);语句输出结果。5、可参考P36,例2.2实现。#include #include int Max(int, int);int main() int a, b; int *P1, *P2; P1=&a; P2=&b; scanf(%d%d,P1, P2); printf(%dn,Max(a, b); return 0; int Max(int x, int y) return xy?x:y; 3.标题:3、公式计算时限:1000ms内存限制:10000K总时限:3000ms描述: 请编程序完成 y=x2+2x+1 的变换,并输出x 从0变化到10的变换结果。输入:无输出: 输出x从0变化到10的变换结果输入样例:无输出样例:x y0 11 42 93 164 255 366 497 648 819 10010 121提示:1. 可定义函数:int Convert (int x)实现相应计算/* 下面的为用户自定义函数,完成数据转换功能 */int Convert (int x) int z;/* 变量定义语句。定义整型变量z */ z = x*x + 2*x + 1;/* 算术表达式,注意x2需要写成x*x,2x需要写为2*x等 */ return (z);/* 函数返回语句,返回z的值即转换结果 */2. 输出语句所使用的格式符请设定为:%dt%dn;#include #include int Convert(int x);int main() int x; int y; int top=0; int bottom=10; int step=1; x=top; printf(xtyn); while (x=bottom) y=Convert(x); printf(%dt%dn,x,y); x=x+step; return 0; int Convert(int x) int z; z=x*x+2*x+1; return (z); 4.标题:4、简单加密时限:1000ms内存限制:10000K总时限:3000ms描述: 假设将26个小写字母首尾链接起来,做成一个圈(a连接在z的后面),请编制程序将给定字符串的每一个字符沿顺时针方向移动10个字符组成一个新的字符串,并输出该字符串。输入:给定的长度小于80的字符串.输出:每一个字符沿顺时针方向移动10个字符组成一个新的字符串输入样例:i like c programming language!输出样例:s vsuo m zbyqbkwwsxq vkxqekqo!提示:可用如下函数实现字符变换:void StrShift(char *p) /“*p + 10”表示移动10个字符 /a的ASCII码值十进制为97,#include #include int main() char a80; int ch; ch=0; while(ach=getchar()!=EOF) if (ach=a&ach=q&ach=z) ach-=16; printf(%c,ach); return 0;5.标题:5、字符统计时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序,计算从键盘输入的空格键,Tab键,换行键的次数。输入:从键盘输入字符。输出:输入的空格键,Tab键,换行键的次数。输入样例:Hello world! c language!输出样例:2 1 1提示:1、可用转义字符或ASCII值进行判断;2、输出格式字符串用“%d %d %dn”;3、用EOF(ASCII码为1,键盘对应输入为Ctrl+Z)终止输入。#include #include #define WORD 1#define NON_WORD 0int main() int ch ; int iCountSP;/*定义变量iCountSP,用于存放输入的空格键数*/ int iCountTab;/*定义变量iCountTab,用于存放输入的Tab键数*/ int iCountLF;/*定义变量iCountLF,用于存放输入的换行键数*/ iCountSP = 0; iCountLF = 0; iCountTab = 0; while(ch=getchar()!=EOF) if(ch= ) +iCountSP; else if(ch=t) +iCountTab; else if(ch=n) +iCountLF; printf(%d %d %dn,iCountSP,iCountTab,iCountLF); return 0 ;6.标题:6、字符串复制时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序将键盘输入的字符存入数组a80中,并将该数组中的所有字符复制到数组b80中,同时去掉所有的空格。输入:键盘输入的字符串。输出:去掉所有的空格后,复制到的字符串。输入样例:Hello world!输出样例:Helloworld!提示:1、字符串结束符为“0”。#include#includeint main() int ch; ch=getchar(); while(ch!=EOF) if(ch!= ) putchar(ch); ch=getchar(); return 0;7.标题:7、字符串的反转时限:1000ms内存限制:10000K总时限:3000ms描述:编制函数void Reverse(char ch),用于完成字符串的反转。输入:任意一个字符串(长度小于100)。输出:反转后的字符串。输入样例:Hello输出样例:olleH#include#includevoid Reverse(char ch);char ch100;char p;int a;int main() while(p=getchar()!=n) cha=p; a+; Reverse (ch); return 0;void Reverse(char ch) int i; if(a=0;i-) printf(%c,chi); printf(n);8.标题:8、求阶乘时限:1000ms内存限制:10000K总时限:3000ms描述:编制函数Factorial(unsigned int n),用于计算n!。其中n13。输入:整数n。输出:n!输入样例:5输出样例:120提示:考虑n13时的结果。#include #include unsigned int Factorial(unsigned int n);int main() unsigned int n; scanf(%u,&n); printf(%un,Factorial(n); return 0;unsigned int Factorial(unsigned int n) unsigned int result, i; result=1; for(i=1; i=n; +i) result=result*i; return result;实验二1.标题:1、二进制数操作时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序计算一个unsigned long型整数的二进制表示中1的个数。要求用函数实现。函数名为int BitCount(long l)输入:一个unsigned long型整数。输出:一个unsigned long型整数的二进制表示中1的个数。输入样例:45L输出样例:4#include #include int BitCount(long l);int main() unsigned int a; scanf(%u,&a); printf(%dn,BitCount(a); return 0;int BitCount(long l) int i = 0; int a=0; while(l!=0) a=l%2; l/=2; if(a=1)i+; return i;2.标题:2、变量交换(一)时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序实现两个整型变量的互换。输入:两个整型量。输出:交换后的两个整型量。输入样例:5 9输出样例:9 5提示:可以利用第三个变量作为临时变量实现交换。#include #include int main() int a, b,temp; int *p1, *p2; scanf(%d%d,&a,&b); p1=&a; p2=&b; temp=*p1; *p1=*p2; *p2=temp; printf(%d %dn,a,b); return 0;3.标题:3、变量交换(二)时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序实现两个char型变量的互换。输入:两个char型变量。输出:交换后的两个char型变量。输入样例:a b输出样例:b a提示:要求不使用第三个变量作为临时变量,可利用异或()运算或用如下算法实现: a=a-b; b=a+b; a=b-a;#include #include int main() char a; char b; scanf(%c %c,&a,&b); a=a-b; b=a+b; a=b-a; printf(%c %cn,a,b); return 0;4.标题:4、数据类型时限:1000ms内存限制:10000K总时限:3000ms描述:编写一个程序计算你所使用的编译系统和计算机系统的char,int,long,float,double类型所占用的字节数,并分别输出显示。输入:无输出:char,int,long,float,double类型所占用的字节数。输入样例:无输出样例:14448提示:用sizeof运算符求字节数,比如sizeof(char)就是char型变量在内存中所占数据的字节数。#include #include int main() int c,i,l,f,d; c=sizeof(char); i=sizeof(int); l=sizeof(long); f=sizeof(float); d=sizeof(double); printf(%dn%dn%dn%dn%dn,c,i,l,f,d); return 0;5.标题:5、进制转换(一)时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序,将十六进制数转换为十进制数。如转换不成功,则输出。输入:一个十六进制数。输出:对应的十进制整数。输入样例:0x4E输出样例:78提示:提示:十六进制以0x或0X开头,十六进制允许的符号有09,AF,af。#include #include int main() int a; scanf(%x,&a); printf(%un,a); return 0;6.标题:6、菜单程序设计时限:1000ms内存限制:10000K总时限:3000ms描述:编制一个菜单程序Menu(),利用switch语句完成菜单的选择,当输入A时,输出“FunA”,当输入B时,输出“FunB”,当输入C时,输出“FunC”,当输入其他字符时返回-1,输出“1”,结束程序。输入:菜单选择字符。输出:相应函数的输出内容。输入样例:A输出样例:FunA#include #include int Menu();int main() int c; while(c=getchar()!=EOF) switch (c) case A: printf(FunAn); break; case B: printf(FunBn); break; case C: printf(FunCn); break; default: printf(-1n); break; return 0; 7.标题:7、字符串转化为整数程序时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序实现将一个数字字符串转化为整数。输入:一个数字字符串。输出:对应整数。输入样例:1234输出样例:1234提示:要求用函数int Atoi(char str)实现。#include #include int Atoi(char str);int main() char str80; int i=0; for(i=0;i80;i+) stri=0; scanf(%d,&i); printf(%dn,i); return 0;8.标题:8、进制转换(二)时限:1000ms内存限制:10000K总时限:3000ms描述:编制程序实现void Itob(int n,char s,int b),将整数n转换为b进制的表示形式,并存入字符数组s中。比如:Itob(n,s,16),s就是n的十六进制编码字符串。输入:整数n和要转换为进制。输出:b进制编码字符串。输入样例:45 16输出样例:2D#include #include void Reverse(int n,char s,int b);char ch100;int main() char s100; int n,b; scanf(%d %d,&n,&b); Reverse(n,s,b); printf(%sn,ch); return 0;void Reverse(int n,char s,int b) int i; int j=0; int k=0; for (i=0;n0;i+) j=n%b; if(j9) si=j+A-10; else si=j+0; n=n/b; i=i-1; while (i=0) chk=si; k+; i-; chk=0;试验三标题:1、查找字符串中的字符时限:1000ms内存限制:10000K总时限:3000ms描述:编制函数int Strchr(char s,char ch),用于返回字符串s中从左边开始第一次出现字符ch的位置,如果字符串s中没有字符ch则返回-1。序号从0开始计.输入:一个字符串和一个字符。输出:字符串s中从左边开始第一次出现字符ch的位置,如果字符串s中没有字符ch则返回-1。输入样例:Hello C language.C输出样例:6#include#include#includeint Strchr(char s,char ch);int main() char s100; int i; char ch; gets(s); scanf(%c,&ch); i=Strchr(s,ch); printf(%dn,i); return 0;int Strchr(char s,char ch) int j,k=0; int a=0; j=strlen(s); while(a=j) if(sa=ch) k+; return a; a+; if(k=0) return -1; return 0;2.标题:2、字符统计时限:1000ms内存限制:10000K总时限:3000ms描述:设计一个函数,统计任意一串字符中数字字符的个数,并在主函数中调用此函数。输入:任意一串字符输出:字符串中数字字符的个数输入样例:abs1234ajbkc输出样例:4#include #include int Reverse(char ch);int main() char ch100; int i; scanf(%s,ch); i=Reverse(ch); printf(%dn,i); return 0;int Reverse(char ch) int a,b=0; for(a=0;cha!=0;a+) if(cha=0&cha=9) +b; return b;3.标题:3、整数排序时限:1000ms内存限制:10000K总时限:3000ms描述: 设计一个函数,对任意n个整数排序(从大到小),并在主函数中输入数据个数n和n个整数,调用此函数实现排序。输入: 第一行:所要输入的整数个数 第二行:依次输入n个整数,中间用空格符隔开输出: 依次输出排序后的n个整数,中间用一个空格符隔开输入样例:10-数据个数0 1 2 3 4 5 6 7 8 9-数据输出样例:9 8 7 6 5 4 3 2 1 0提示:请使用循环语句依次输入所要排序的n个整数.#include #include int Paixu(int ch,int n);int main() int ch100; int n,i=0; scanf(%d,&n); while(in) scanf(%d,&chi); i+; Paixu(ch,n); for(i=0;in;i+) printf(%d ,chi); printf(n); return 0;int Paixu(int ch,int n) int a,b,c; for(b=1;b=b;c-) if(chc-1chc) a=chc; chc=chc-1; chc-1=a; return 0;4.标题:4、求素数时限:1000ms内存限制:10000K总时限:3000ms描述: 设计一个函数,用以判断一个整数是否为素数,如果是,则返回1;如果不是,则返回0;并利用此函数,找出100-200之间的所有素数并打印,每个素数中间用一个空格符隔开。输入:无输出:100-200之间的所有素数输入样例:无输出样例:101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199#include #include int prime(int x);int main() int a; for(a=100;a=200;a+) int b; b=prime(a); if(b=1) printf(%d ,a); printf(n); return 0;int prime(int x) int i; for(i=2;i*i=x;i+) if(x%i!=0); else return 0; return 1;5.标题:5、求最大公约数时限:1000ms内存限制:10000K总时限:3000ms描述: 设计一个函数,找出任意2个整数的最大公约数,并在主函数中调用此函数。输入:2个整数输出:最大公约数输入样例:8 4输出样例:4提示: 求最大公约数可用辗转相除法: rem=m%n; m=n;n=rem;若rem=0,m是最大公约数,程序结束;否则从新执行以上语句。#include #include int m, n, rem,i;int Rem(int m, int n);int main() int j; scanf(%d %d, &m,&n); j=Rem(m, n); printf(%dn, j); return 0;int Rem(int m, int n) i=m%n; if(i=0) rem=n; else m=n; n=i; Rem(m,n); return rem;实验四1.标题:1、整数排序时限:1000ms内存限制:10000K总时限:3000ms描述: 用指针实现:由键盘输入10个整数,将他们按由小到大的顺序排列。输入:键盘输入的10个整数。输出:按由小到大的顺序排列。输入样例:1 5 4 3 2 9 23 11 5 7输出样例:1 2 3 4 5 5 7 9 11 23#include #include int Reverse(int *a, int n);int main() int a10,i,*p; for(i=0;i10;i+) scanf(%d, &ai); p=a; Reverse(p,10); for(i=0;i10;i+) printf(%d ,ai); printf(n); return 0;int Reverse(int *a, int n) int i,j,*p; for(i=0;in-1;i+) for(p=a;p*(p+1) j=*p; *p=*(p+1); *(p+1)=j; return 0;2.标题:2、学生成绩时限:1000ms内存限制:10000K总时限:3000ms描述: 已知10个学生的5门课程的成绩,将其存入一个二维数组,求每一个学生的总成绩和每一个学生的平均成绩。输入:10个学生的5门课程的成绩输出:每一个学生的总成绩和每一个学生的平均成绩.保留小数点后两位.输入样例:90.5 80 70 89 84.691.5 81 71 88 84.792.5 82 72 87 84.893.5 83 73 86 84.994.5 84 74 85 84.095.5 85 75 84 84.196.5 86 76 83 84.297.5 87 77 82 84.398.5 88 78 81 84.499.5 89 79 80 84.5输出样例:414.10 82.82416.20 83.24418.30 83.66420.40 84.08421.50 84.30423.60 84.72425.70 85.14427.80 85.56429.90 85.98432.00 86.40#include #include int i=0,j=0;float a,b;float ch105;float Gates(float ch105);int main() for(i=0;i10;i+) for(j=0;j5;j+) scanf(%f,&chij); for(i=0;i10;i+) a=Gates(ch); b=a/5; printf(%.2f %.2fn,a,b); a=0,b=0; return 0;float Gates(float ch105) for(j=0;j5;j+) a=a+chij; return a;3.标题:3、对角线数据时限:1000ms内存限制:10000K总时限:3000ms描述: 输入一个55的数组,分别求其主对角线和辅对角线上元素之和。输入:55的数组输出:主对角线和辅对角线上元素之和输入样例:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25输出样例:65 65提示: 主对角线为从矩阵的左上角至右下角的连线,在数组中即指行列下标相同的元素,辅对角线为从矩阵的右上角至左下角的连线,这些元素的下标之间也可用相应的表达式表达。#include #include int i,j;int ch55;void Sum(int ch5);int main() for(i=0;i5;i+) for(j=0;j5;j+) scanf(%d,&chij); Sum(ch); return 0;void Sum(int ch5) int a=0,b=0; for(i=0;i=0;j-) b=b+chj4-j; printf(%d %dn,a,b);4.标题:4、字符串排序时限:1000ms内存限制:10000K总时限:3000ms描述:用指针实现:将10个字符串(设其长度小于20)从小到大排序。输入:10个字符串。输出:排序后的10个字符串。输入样例:ijkjkldefghidefcdehijdefefgfgh输出样例:cdedefdefdefefgfghghihijijkjkl提示: 定义二维字符数组和指向该数组的指针数组; 用循环使指针数组的元素指向二维字符数组各行首; 用循环为指针数组元素赋字符串为值; 用strcmp函数比较两个指针数组元素的值、用strcpy函数交换两个指针数组元素的值。#include #include#includechar *p10;int i=0,n=10;void Sort(char a20,int n);int main() char a1020; for(i=0;i10;i+) scanf(%s,ai); Sort(a,10); return 0;void Sort(char a20,int n) for(i=0;i10;i+) pi=ai; int a1,a2; char *temp; for(a1=1;a1=a1;-a2) if(strcmp(pa2-1,pa2)0) temp=pa2-1; pa2-1=pa2; pa2=temp; for(i=0;i10;i+) printf(%sn,pi); 5.标题:5、数组最大、最小数及其调整时限:1000ms内存限制:10000K总时限:3000ms描述:用指针实现:由键盘输入10个整数,将最大的调到最后,最小的调到最前。输入:10个整数。输出:最大的调到最后,最小的调到最前。输入样例:5 8 7 6 9 4 3 2 1 0输出样例:0 8 7 6 5 4 3 2 1 9#include #include int main() int a10,i,tem; int *p1,*p2,*p3; p1=a; p2=a; for(i=0;i10;i+) scanf(%d,&ai); for(p3=a;p3a+10;p3+) if(*(p3)=*(p2) p2=p3; tem=*a; *a=*p2; *p2=tem; for(p3=a;p3=*(p1) p1=p3; tem=*(a+9); *(a+9)=*p1; *p1=tem; for(i=0;i10;i+) printf(%d ,ai)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论