C语言第四次作业解析
电大《C语言知识学习程序设计》第1,2,3,4次作业任务及答案解析
![电大《C语言知识学习程序设计》第1,2,3,4次作业任务及答案解析](https://img.taocdn.com/s3/m/3e05b754ba0d4a7303763a8b.png)
第一次作业一、写出下列每个程序运行后的输出结果1. #include<stdio.h>void main(){int x=5;switch(2*x-3){case 4:printf("%d ",x);case 7:printf("%d ",2*x+1);case 10:printf("%d ",3*x-1);break;default:printf("%s ","default\n");}printf("%s\n","switch end.");}2. #include<stdio.h>void main(){int i,s=0;for(i=1;i<=6;i++)s+=i*i;printf("s=%d\n",s);}3. #include<stdio.h>void main(){int i,s1=0,s2=0;for(i=0;i<10;i++)if(i%2)s1+=i;else s2+=i;printf("%d %d\n",s1,s2);}4. #include<stdio.h>void main(){int n=10,y=1;while(n--){y++;y++;}printf("y=%d\n",y);}5. #include<stdio.h>void main(){int f,f1,f2,i;f1=f2=1;printf("%d %d ",f1,f2);for(i=3;i<=10;i++){f=f1+f2;printf("%d ",f);if(i%5==0)printf("\n");f1=f2;f2=f;}printf("\n");}6. #include<stdio.h>#include<math.h>void main(){int i,n;for(n=2;n<=20;n++){int temp=(int)sqrt(n);//sqrt(n)求出n的平方根并取整for(i=2;i<=temp;i++)if(n%i==0)break;if(i>temp)printf("%d ",n);}printf("\n");}7. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,c2,c3,c5;c2=c3=c5=0;for(i=1;i<=M;i++){if(i%2==0)c2++;if(i%3==0)c3++;if(i%5==0)c5++;}printf("%d %d %d\n",c2,c3,c5);}8. #include<stdio.h>#include<math.h>const int M=20;void main(){int i,s;for(i=1,s=0;i<15;i++){if(i%2==0 || i%3==0)continue;printf("%d ",i);s+=i;}printf("%d\n",s);}参考答案:1、答案:11 14 switch end.2、答案:s=91.3、答案:25 20.4、答案:y=21.5、答案:1 1 2 3 58 13 21 34 556、答案:2 3 5 7 11 13 17 197、答案:10 6 48、答案:1 5 7 11 13 37第二次作业一、根据下列每个题目要求编写程序1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。
C语言程序设计谭浩强第四课后答案讲
![C语言程序设计谭浩强第四课后答案讲](https://img.taocdn.com/s3/m/8b8bf894bed5b9f3f80f1c20.png)
第一章程序设计和C语言【第15页】1-5#include <stdio.h>int main ( ){ printf ("**************************\n\n");printf(" Very Good!\n\n");printf ("**************************\n");return 0;}1-6#include <stdio.h>int main(){int a,b,c,max;printf("please input a,b,c:\n");scanf("%d,%d,%d",&a,&b,&c);max=a;if (max<b)max=b;if (max<c)max=c;printf("The largest number is %d\n",max);return 0;}第2章算法——程序的灵魂【第36页】暂无答案第3章最简单的C程序设计——顺序程序设计【第82页】3-1#include <stdio.h>#include <math.h>int main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf("p=%f\n",p);return 0;}3-2-1#include <stdio.h>#include <math.h>int main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5); // 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次p5=p*pow(1+r0/4,4*5); // 存活期存款。
山东科技大学C语言作业四
![山东科技大学C语言作业四](https://img.taocdn.com/s3/m/ae5556da998fcc22bcd10dad.png)
Problem A: 只有一个二元运算符的表达式运算Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 5044 Solved: 1937[Submit][Status][Web Board]Description编程序读入并计算只有一个二元运算符的表达式的值。
用到的二元运算符有:“+”、“-”、“*”、“/”、“%”,与C语言的语法一致。
Input每行输入一个表达式,格式为:二个整型的操作数a和b,中间用一个符号分开,这个符号就是运算符。
测试样例不存在除数为0的情况。
输入以a和b为0,且用一个空格分开结束。
Output每行对应输入的运算符为“+”、“-”、“*”、“/”、“%”,则计算a+b、a-b、a*b、a/b、a%b的值;否则输出“invalid op”。
Sample Input33+58*92.21-617/39%30 0Sample Output3872invalid op-55#include<stdio.h>#include<math.h>void main(){int i,a,b;char c;for(i=0;i<=100;i++){for(;scanf("%d%c%d",&a,&c,&b)!=EOF;) if(a==0&&c==' '&&b==0)goto loop;elseswitch(c){case'+':printf("%d\n",a+b);break;case'-':printf("%d\n",a-b);break;case'*':printf("%d\n",a*b);break;case'/':printf("%d\n",a/b);break;case'%':printf("%d\n",a%b);break;default:printf("invalid op\n");}}loop:i=101;}Problem B: 摄氏——华氏温度转换表Time Limit: 1 Sec Memory Limit: 2 MBSubmit: 6632 Solved: 1711[Submit][Status][Web Board]Description已知华氏温度F,转换为摄氏温度C的公式为C=(F-32)*5/9。
C语言实验报告 实验四 参考答案
![C语言实验报告 实验四 参考答案](https://img.taocdn.com/s3/m/7b303deee87101f69f31955a.png)
实验四循环结构程序设计2(参考答案)(1)编写程序sy4-1.c,输入n,计算并输出如下多项式的值:S n=1+1/2!+1/3!+1/4!+…+1/n!。
例如输入n为15时,输出1.718282。
算法分析:第一项可以看成1/1!,用循环控制累加n个分式,分式的分母是i!,分子固定为1。
参考答案:# include <stdio.h>void main(){double s=0,p=1;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){p = p * i ; //计算分母i!s = s + 1 / p ; //累加}printf("s=%lf\n",s);}运行结果:(2)编写程序sy4-2.c,输入n,根据以下公式计算s:,例如当n=11时,结果为1.833333。
算法分析:该多项式的分母是累加。
参考答案:# include <stdio.h>void main(){double sn=0,s=0;int i,n;scanf("%d",&n);for(i=1;i<=n;i++){s = s + i ; //计算分母1~i的累加和sn = sn + 1 / s ;}printf("sn=%lf\n",sn);}运行结果:(3)编写程序sy4-3.c,计算3~n之间所有素数的平方根之和,要求:输入n,输出结果。
例如,输入n 的值是100,则输出结果是148.874270。
注意n应在2~100之间。
算法分析:穷举3~n之间的数找素数,若是素数则累加她的平方根。
参考答案:# include <stdio.h># include <math.h>void main(){int i,j,n,flag;double s=0;scanf("%d",&n);for(i=3;i<n;i++) //穷举3~n之间找素数{flag=1; //假设当前的i是素数,标志变量设为1for(j=2;j<i;j++) //穷举要判断是否是素数的i的除数,范围2~i-1if(i%j==0) //若i能被j整除,则不是素数{ flag=0; break; } //标志变量改为0,并终止循环if( flag == 1 )s = s + sqrt( i ); //若i是素数,则累加sqrt(i)}printf("s=%f\n",s);}运行结果:(4)编写程序sy4-4.c,根据以下公式求p的值,(m与n为两个正整数且m>n)。
c语言第四次上机作业参考答案
![c语言第四次上机作业参考答案](https://img.taocdn.com/s3/m/359d5d17a300a6c30d229f05.png)
第四次上机作业参考答案:1.数组转置在主函数中定义一个n(1<=n<=6)维方阵,并从键盘读入数组元素;编写函数transpose(a,n)实现数组a转置;在主函数中输出转置后的方阵。
例:输入41 2 3 4 输出 1 5 9 135 6 7 8 2 6 10 149 10 11 12 3 7 11 1513 14 15 16 4 8 12 16#include <stdio.h>#define N 6void transpose(int a[][N],int n);void main( ){ int n,i,j;int a[N][N];printf("Input n(n<=6):");scanf("%d",&n);printf("Input the array:\n");for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);printf("Display the array:\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}transpose(a,n);printf("Display the transposed array:\n");for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%-4d",a[i][j]);printf("\n");}}void transpose(int a[][N],int n){int i,j,t;for(i=0;i<n;i++)for(j=0;j<i;j++){ t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}2.学生信息编写4个函数实现下列功能:(1)函数input() 输入20个学生姓名和高考总分;(2)函数sort() 按高考总分从高到低的顺序排序,姓名顺序也随之调整;(3)函数display()显示学生姓名及其高考总分;(4)在主函数中输入一个姓名,编写函数search() 用顺序查找方法找出该学生。
C语言第4次作业运算符与
![C语言第4次作业运算符与](https://img.taocdn.com/s3/m/948be8f55122aaea998fcc22bcd126fff7055d35.png)
C语言第4次作业运算符与目单选题:1、若变量c为char类型,能正确判断出c为小写字母的表达式是A. 'a'<=c<= 'z'B. (c>= 'a')||(c<= 'z')C. ('a'<=c)and ('z'>=c)D. (c>= 'a')&&(c<= 'z')学生答案:D参考答案:D2、以下程序的输出结果是mai n(){ int x=0.5; char z='a';printf("%d\n", (x& 1)&&(z<'z') ); }A. 0B. 1C. 2D. 3学生答案:A参考答案:B3、C语言中运算对象必须是整型的运算符是A. %=B. /C. =D. 〈二学生答案:A参考答案:A4、有如下程序段int a=14,b=15,x;char c='A';x=(a&&b)&&(cv'B');执行该程序段后,x的值为A. tureB. falseC. 0D. 1学生答案:D参考答案:D5、设有int x=11; 则表达式(x++ * 1/3) 的值是A. 3B. 4C. 11D. 12学生答案: A参考答案: A6、设int x=1, y=1; 表达式(!x||y--) 的值是A. 0B. 1C. 2D. -1学生答案: B参考答案: B7、下列程序的运行结果是#include < stdio.h > main() { int a=2,c=5; printf("a=%d,b=%d\n",a,b);}A. a=%2,b=%5B. a=2,b=5C. a=d, b=dD. a=%d,b=%d学生答案: B参考答案: B8、判断字符型变量x 是否是大写字母的正确表达式是___A. 'A' <= x <='z'B. (x>=A) && (x <= Z)C. ('A'<= x) && ('Z' >= x)D. (x >='A') && (x <='Z')学生答案: D参考答案: D9、若已定义X和丫为double型,则表达式:x=1,y=x+3/2的值是 _____A. 1B. 2C. 2.0D. 2.5学生答案: C参考答案: c10、设有以下定义:int x=10,y=3,z;printf("%d\n",z=(x%y,x/y))的输出结果是 ____A. 1B. 0C. 4D. 3学生答案: D参考答案: D11、设ch是char型变量,其值为A,且有下面的表达式: ch=(ch>='A'&&ch<='Z')?(ch+32):ch上面表达式的值是A. AB. aC. ZD. z学生答案: B参考答案: B12、若有说明和语句:int a=5;a++;此处表达式a++的值是A. 7B. 6C. 5D. 4学生答案: C参考答案: C13、假定有以下变量定义:int k=7 ,x=12;则能使值为 3 的表达式是_________ 。
C语言程序设计第四次作业-选择结构(2)
![C语言程序设计第四次作业-选择结构(2)](https://img.taocdn.com/s3/m/1fa856c9cf2f0066f5335a8102d276a2002960ea.png)
C语⾔程序设计第四次作业-选择结构(2)(⼀)改错题输出三⾓形的⾯积和周长,输⼊三⾓形的三条边a、b、c,如果能构成⼀个三⾓形,输出⾯积area和周长perimeter(保留2位⼩数);否则,输出“These sides do not correspond to a valid triangle”。
输⼊输出样例1: Enter 3 sides of the triangle: 5 5 3 area = 7.15; perimeter = 13.00输⼊输出样例2: Enter 3 sides of the triangle: 1 4 1 These sides do not correspond to a valid triangle源程序(有错误的程序)#include <stdio.h>#include <math.h>int main(void){double a,b,c;double area,perimeter,s;printf("Enter 3 sides of the triangle: ");scanf( "%lf%lf%lf",&a,&b,&c );if( a + b > c || b + c > a || a + c > b)s = ( a + b + c ) / 2;area = sqrt( s * ( s - a ) * ( s - b ) * ( s - c );perimeter = a + b + c;printf("area = %.2f; perimeter = %.2f\n",area,perimeter);elseprintf("These sides do not correspond to a valid triangle\n");return 0;}错误信息1:错误原因:少⼀个右括号。
C语言程序设计 第四次作业
![C语言程序设计 第四次作业](https://img.taocdn.com/s3/m/2d0c84e4cf2f0066f5335a8102d276a20029601b.png)
C语言程序设计第四次作业C语言是一种广泛应用于系统软件和应用软件开发的高级程序设计语言。
在C语言程序设计的第四次作业中,我们将继续深入研究C语言的各种特性和技巧,以提升我们在程序设计方面的能力。
一、循环结构的应用通过使用循环结构,我们可以重复执行一段代码,从而提高程序的效率。
在第四次作业中,我们将学习如何使用循环结构来解决实际问题。
1. 实现一个计算阶乘的程序阶乘是指从1乘到一个给定的正整数的连乘积。
我们可以使用循环结构来实现计算阶乘的程序。
以下是一个简单的示例:```c#include <stdio.h>int main() {int number, i;unsigned long long factorial = 1;printf("输入一个正整数:");scanf("%d", &number);for(i = 1; i <= number; i++) {factorial *= i;}printf("%d 的阶乘是 %llu\n", number, factorial);return 0;}```2. 打印九九乘法表九九乘法表是一个常见的数学模式,我们可以使用循环嵌套的方式打印出九九乘法表。
以下是一个简单的示例:```c#include <stdio.h>int main() {int i, j;for(i = 1; i <= 9; i++) {for(j = 1; j <= i; j++) {printf("%d * %d = %d\t", j, i, i * j);}printf("\n");}return 0;}```二、函数的使用函数是C语言程序设计中重要的组成部分,它们将一系列的代码进行封装,以达到代码复用和模块化的目的。
在第四次作业中,我们将学习如何使用函数来改进程序的结构。
国家开放大学电大《C语言程序设计》网络课形考任务4作业及答案
![国家开放大学电大《C语言程序设计》网络课形考任务4作业及答案](https://img.taocdn.com/s3/m/6ec9c7f9a45177232e60a276.png)
国家开放大学电大《C语言程序设计》网络课形考任务4作业及答案形考任务4一、选择题(共30分,每小题2分)题目1假定有“struct BOOK{char title[40]; float price;}; struct BOOK book;”,则不正确的语句为()。
选择一项:a. struct BOOK *x=malloc(book);题目2假定有“struct BOOK{char title[40]; float price;} book;”,则正确的语句为()。
选择一项:b. struct BOOK *x=&book;题目3在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是()。
选择一项:c. 分号题目4假定一个结构类型的定义为“struct A{int a,b; double c;};”,则该类型的长度为()。
选择一项:d. 16题目5假定一个结构类型的定义为“struct D{int a; D* next;};”,则该类型的长度为()。
选择一项:b. 8反馈Your answer is correct.题目6假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。
选择一项:b. x->a题目7与结构成员访问表达式等价的表达式为()。
选择一项:c. (&x)->name题目8假定一个链表中结点的结构类型为“struct AA{int data, struct AA *next;};”,则next数据成员的类型为()。
选择一项:b. struct AA*题目9假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为()。
选择一项:b. p->next=f和f=p题目10标准输入设备键盘的文件流标识符是()。
选择一项:a. stdin题目11表示文件结束符的符号常量为()。
选择一项:c. EOF题目12C语言中打开一个数据文件的系统函数为()。
C语言 第四次作业
![C语言 第四次作业](https://img.taocdn.com/s3/m/a5137c37ee06eff9aef807d0.png)
第四次作业
1. 首先定义一个点类Point,其私有成员为其坐标X,Y。
设计构造函数,拷贝构造函数,析构函数(可以什么都不做,只打印信息,表示其被调用),设置新值函数Set, 打印成员值函数Print。
再定义一个线类Line,线类是在公有继承点类的基础上,新增私有成员斜率S,并设计构造函数,拷贝构造函数,析构函数(可以什么都不做,只打印信息,表示其被调用),设置新值函数Set, 打印成员值函数Print以及其它你认为对访问此Line类对象有用的成员函数。
并用此Line类定义对象,调用所有成员函数。
尤其是考察构造函数的调用顺序。
2. 若上题中基类Point的私有成员X,Y改为保护成员属性,利用其性质,请重写整个程序,尽量简化代码,提高效率。
C语言学习与应用课后习题答案 学习任务四参考答案 北邮
![C语言学习与应用课后习题答案 学习任务四参考答案 北邮](https://img.taocdn.com/s3/m/646bd2aadc88d0d233d4b14e852458fb770b38ee.png)
学习任务四参考答案问题4T:使用当型循环结构编写程序计算10!的值,即1~10的自然数之积。
(1)绘制程序框图:(2)编写程序代码:#incIude"stdio.h"voidmain()( inti,s;i=1;s=1;whi1e(i<=10)(s*=i;i++;)printf(1,10!=%d",s);getchar(); 说明整型变量:恁『0Is=s*i|输出S I问题4-2使用直到型循环结构编写程序,计算1~100的所有偶数之和。
(1)绘制程序框图:(2)编写程序代码:#inc1ude,,stdio.h"voidmain()(inti,s;i=0;s=0;do(s+=i;i=i+2;}whi1e(i<=100);Printf(TIOO所有偶数和二%d",s);getchar();问题4-3使用for循环结构编写程序,计算1~100的所有奇数之和。
for(i=1;i<=100;i=i÷2)(s+=i;)printf("Γ1OO所有奇数和%d",s);getchar();问题4-4使用循环嵌套编写程序使其输出如下图形。
**********#incIude"stdio.h"voidmain()(inti,j;for(i=1;i<=6;i++)((j=1;j<=i;j++)for(pri∏tf(π*");)printf("∖nπ);)getchar();1问题4-5补充程序,实现输出1〜50中能被7整除的数的功能,并画出流程框图。
#inc1ude,,stdio.h"voidmain(){inti;for(i=1;i<=50;i÷+){if(i%7!=0)continue;printf(1,%d∖n,';i);绘制程序框图:编程训练4-1-1计算1〜n的自然数之和。
C语言第四次作业教学教材
![C语言第四次作业教学教材](https://img.taocdn.com/s3/m/a648c1bc4b73f242336c5fcf.png)
void expands(char s1[],char s2[])
{
int flag;
char j;
int i,l;
int sum=-1; l=strlen(s1);/*确定字符串长度*/ flag=0;
for (i=0;i<l;i++)
{ if (s1[i]==‘-’){flag=1;continue;}/*如果这个字符是‘-‘那么将flag赋值为
本题解析:
这个题。。乍一看吓一跳。。其实仔细读题 以后发现这个题是比较水的。。
首先是题目叙述问题:样例输出中(下图中”-” 代表空格) 应该是打错了…其实是’#’代表空格。。
然后矩阵加法就是把矩阵中对应的元素相加, 减法就是对应的元素相减。比如说答案中第一行 第一个数的3就是1+3-1得到的…
【输出形式】 向标准输出打印矩阵的操作结果。输出N行,每行对应矩阵在该行上的所有元素, 每一行末均输出一个回车符。每个元素占5个字符宽度(包括负号),向右对齐, 不足部分补以空格。
【输入样例】
3 1 -2 7 2 8 -5 369 + 357 -1 2 6 3 7 10 1 -2 7 2 8 -5 369 #【输出样例】 (下图中”-”代表空格) ####3####5####7 ###-1####2####6 ####3####7###10
a-c-u-B 【输出样例】
abcdefghijklmnopqrstu-B
本题解析:
这个题目乍一看比较麻烦。。其实是这次作 业中比较简单的题目之一。因为特殊的字符只有 一个,那就是‘-’,只要判断好’-’这个题目就 完成了。
这个方法比较朴素,就是用一个flag来表示 前一个字符是不是‘-’如果不是‘-‘那么就输出 这个字符,如果是的话就进行判断,判断这个字 符跟’-‘前字符的关系,如果这个字符≤’-‘前 字符,那就输出’-‘在输出这个字符。否则的话 就从‘-’前字符到这个字符循环输出即可。
大连理工大学C语言夏浩老师第四次上机作业
![大连理工大学C语言夏浩老师第四次上机作业](https://img.taocdn.com/s3/m/1527b42d5901020207409cf1.png)
1.题目描述:排序:使用起泡法和选择法对10个整数实现递减排序。
分析:将冒泡排序代码中的>变成<即为沉底排序,选择排序也一样. 流程图:程序代码:#include<stdio.h>void main(){int i,a[10],b[10];int j,t,k;printf("10个数沉底排序和冒泡排序\n");printf("原始数列:");for(i=0;i<10;i++){scanf("%d",&a[i]);b[i]=a[i];}for(j=0;j<9;j++){for(i=0;i<9-j;i++){if(a[i]<a[i+1]){t=a[i+1];a[i+1]=a[i];a[i]=t;}}}for(j=0;j<9;j++){k=j;for(i=j+1;i<9;i++)if(b[k]<b[i]) k=i;if(k!=j){t=b[j];b[j]=b[k];b[k]=t;}}printf("沉底排序后的数列:");for(i=0;i<10;i++)printf("%2d",a[i]);printf("\n");printf("冒泡排序后的数列:");for(i=0;i<10;i++)printf("%2d",b[i]);printf("\n");return 0;}截图:2.题目描述:统计:从键盘输入10个学生的数学(MT)、英语(EN)和物理(PH)成绩,并按照如下统计形式输出,包括学生学号(NO)、各科成绩、总成绩(SUM)、平均分(AVE)及是否每科都超过90分(‘Y’ or ‘N’)NO MT EN PH SUM AVE >90--------------------------------------------------------------------1 97 87 92 276 92 N2 92 91 90 273 91 Y3 90 81 82 253 84 N.....题目分析:在二维数组输入10个人三科成绩,在第一层循环计算总数和平均数,并判断平均数是否大于90.流程图:程序代码:#include<stdio.h>#define num 10int sum(int grade[][3],int i);int main(){int grade[num][3];int i,j;int s=0,a=0;for(i = 0 ;i < num ;i++)for(j = 0 ;j < 3 ;j++)scanf("%d",&grade[i][j]);printf("NO MT EN PH SUM AVE >90\n"); printf("-----------------------------\n"); for(i = 0 ;i < num ;i++){printf("%2d ",i+1);for(j = 0 ;j < 3 ;j++){printf("%3d ",grade[i][j]);s += grade[i][j];}printf("%4d ",s);a = s/3.0;printf("%3d ",a);if(a >= 90) printf(" Y\n");else printf(" N\n");}return 0;}屏幕截图:3. 题目描述:统计大写辅音字母个数:某文本共有3行,每行不超过80个字符,试编写一个程序统计该文本中大写辅音字母的个数(文本由键盘输入)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四次作业:数组1.字符筛选编写一个程序,先输入一个字符串str1(长度不超过20),再输入一个单独的字符ch,然后程序会把字符串str当中出现的所有的ch字符都删掉,从而得到一个新的字符串str2,然后把这个字符串打印出来。
例如:●输入:字符串str1为:86-010-********字符ch为:-●输出:字符串str2为:861062785001程序代码:#include<stdio.h>#include<string.h>void main(){int i,j=0,length;char str1[21],str2[21],ch;printf("字符串str1为:");gets(str1);printf("字符ch为:");scanf("%c",&ch);length=strlen(str1);for(i=0;i<=length;i++){if(str1[i]!=ch){str2[j]=str1[i];j++;}else continue;}puts(str2);}2.数据合并编写一个程序,能够输入两个预先从小到大排列的整数型数组(假设数组长度最大为20,数组输入时遇到数字0结束);要求将这两个数组的数字能够合并成为一个新的从小到大顺序排列的整数型数据,并将新数组输出。
例如:●输入:请输入第一个数组:1,2,3,12,16,20,25,40,0请输入第二个数组:4,5,6,15,18,20,21,22,25,38,45,0●输出:合并后的数组为:1,2,3,4,5,6,12,15,16,18,20,20,21,22,25,25,38,40,45/*编写一个程序,能够输入两个预先从小到大排列的整数型数组(假设数组长度最大为20,数组输入时遇到数字0结束);要求将这两个数组的数字能够合并成为一个新的从小到大顺序排列的整数型数据,并将新数组输出。
例如:输入:请输入第一个数组:1,2,3,12,16,20,25,40,0请输入第二个数组:4,5,6,15,18,20,21,22,25,38,45,0输出:合并后的数组为:1,2,3,4,5,6,12,15,16,18,20,20,21,22,25,25,38,40,45*/ 程序代码:#include<stdio.h>#include<string.h>void main(){int i,j,t,k,m,n,r;int a[20],b[20],c[40];printf("请输入第一个数组:");for (i=0;;i++){scanf("%d",&a[i]);m=i-1;if (a[i]==0) break;}printf("请输入第二个数组:");for (j=0;;j++){scanf("%d",&b[j]);n=j-1;if (b[j]==0) break;}for (i=0;i<=m;k++,i++)c[k]=a[i];for (j=0;j<=n;k++,j++)c[k]=b[j];for (r=0;r<=m+n;r++){for (k=0;k<=m+n;k++)if (c[k]>c[k+1]){t=c[k];c[k]=c[k+1];c[k+1]=t;}}for (k=0;k<=m+n;k++)printf("%d ",c[k]);}3.数制转换请使用数组编写一个程序,输入一个二进制的字符串(长度不超过32),然后计算出相应的十进制整数,并把它打印出来。
例如,●输入:请输入二进制数字符串:111011101110111011101110●输出:对应的十进制数:15658734程序代码:#include<stdio.h>#include<string.h>#include<math.h>void main(){char str[32];int i,j=0,k=0;long int t=0;printf("请输入二进制字符串:");gets(str);j=strlen(str);for(i=j-1;i>=0;i--){t+=(str[i]-48)*pow(2,k);k++;}printf("对应的十进制数:%d\n",t);}4.对称数字一辆汽车在开始出发前其里程表上的读数是一个对称数95859,后匀速行驶两个小时后,发现里程表上是一个新的对称数。
问该新的对称数是多少?汽车的速度是多少?注:所谓对称数是指从左向右读与从右向左读完全一样的数字。
请在合理的范围内(提示,车速别太快也不能太慢,假设介于30~120公里/小时),编程解决上述问题。
程序代码:#include<stdio.h>#include<math.h>void main(){int a[5];int m=95859,i,s,v,t=2;for(v=30;v<=120;v++){s=m+v*t;for(i=0;i<=4;i++){a[i]=fmod((floor(s/(pow(10,i)))),10);}if(a[0]==a[4]&&a[1]==a[3])printf("新的对称数为:%d,速度为:%d\n",s,v);}}5.矩阵元素的运算读入1 个正整数n(1≤n≤10), 再读入n*n 阶方阵 a , 计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
(副对角线为从矩阵的右上角至左下角的连线) 例:括号内是说明,可以不输入、不输出。
●输入: 4 (n=4)2 3 4 15 6 1 17 1 8 11 1 1 1●输出:sum=35程序代码:#include<stdio.h>void main(){int n,i,j,sum=0;int a[10][10];printf("请输入n的值:");scanf("%d",&n);printf("请输入n*n矩阵a:\n");for(i=0;i<=n-1;i++){for(j=0;j<=n-1;j++){scanf("%d",&a[i][j]);if(i+j!=n-1&&i!=n-1&&j!=n-1)sum+=a[i][j];}}printf("sum=%d\n",sum);}6.加法口诀表要求使用二维数组求解下列问题。
(提示:将加数、被加数、和放入一个二维数组中, 再输出该数组)。
输入 1 个正整数 n(1≤n≤10),输出一张 20 以内的加法口诀表. 要求,该口诀表中的加数与被加数都不大于n, 分别存放在该表格中的第一行和第一列. 样式例如下:括号内是说明●输入:6 (n=6)●输出:+ 1 2 3 4 5 61 22 3 43 4 5 64 5 6 7 85 6 7 8 9 106 7 8 9 10 11 12#include<stdio.h>void main(){int a[11][11];int i,j,n;printf("请输入n的值:");scanf("%d",&n);for(i=0;i<=n;i++){for(j=0;j<=n;j++){if(i==0&&j!=0)a[i][j]=j;if(i!=0&&j==0)a[i][j]=i;if(i!=0&&j!=0)a[i][j]=i+j;if(i==0&&j==0)a[i][j]=43;}}for(i=0;i<=n;i++){for(j=0;j<=n;j++){if((i!=0&&j==0)||(j!=0&&i==0)||(i!=0&&j!=0&&j<=i)){printf("%4d",a[i][j]);}if(i==0&&j==0)printf("%4c",a[i][j]);}printf("\n");}}7.字符与字母(综合题)用户通过键盘输入一行文档(假设最大长度不超过100个字符),直到按句号“.”键时,输入结束。
请编程实现以下的功能:(1)字母的转换:在用户敲键盘的时候,输入的字符,如果它是大写字母,则回显相应的小写字母;如果它是小写字母,则回显相应的大写字母;其他字符,原样回显输出。
(2)字符的统计:分别统计出其中的英文字母、空格、数字和其他字符的个数。
例如:●输入:(输入时回显)a 19-YEAR-OLD SAYS HE’S READY TO MAKE A DIFFERENCE.(用户实际输入为:A 19-year-old says he’s ready to make a difference.)●输出: (用户按句号“.”后输出,按照规则19-year-old 以及 he’s 都被认为是一个词)英文字母个数:37空格个数为:8数字个数为:2其他字符个数:4(提示,可以使用 #include <conio.h> 中的 getch()函数,该函数在键盘输入时,不缓存,不回显)程序代码:#include<stdio.h>#include<conio.h>#include<string.h>#include <ctype.h>void main(){int letter=0,space=0,figure=0,other=0,i;char str[100];printf("请输入字符串:\n");for(i=0;i<=100;i++){if((str[i]=getch())!='.'){if(isupper(str[i])){printf("%c",str[i]+32);letter++;}else if(islower(str[i])){printf("%c",str[i]-32);letter++;}else{printf("%c",str[i]);if (str[i]==' ')space++;else if (str[i]>='0'&&str[i]<='9')figure++;elseother++;}i++;}else break;}printf(".");other++;printf("\n字符%d个,\n空格%d个,\n数字%d个,\n其它字符%d个\n",letter,space,figure,other);}8.矩阵的初始化已知,在C语言中,函数 srand() 与 rand()配合使用,可以生成一系列的随机数。