任务五 C语言数组(练习题)-湖北省计算机技能高考操作(应会)考纲技能通

| 2份
| 13页
| 76人阅读
| 0人下载

内容正文:

湖北省计算机类技能高考实操练习题 一.程序设计题 1.从键盘接收3个无序的整数,将这3个数据都插入到升序排列的数组中。 #include<stdio.h> #define N 10 void main( ) { int a[N+5]={4,6,9,12,15,18,23,26,32,39},p,x,i,j; for(i=0;i<N;i++){ printf("%d ",a[i]); } printf(" "); /*******space*******/ /*******space*******/ for(i=0;i<N+3;i++){ printf("%d ",a[i]); } printf(" "); } 2.有两个降序排列的集合A和B,A中无重复元素,B中也无重复元素,求集合B-A的差集(即:这些元素属于集合B但不属于集合A),存放于数组c中,并输出。 #include<stdio.h> void main() { int a[3],b[5],c[5]; int t=0,i,j=0; printf("请输入3个整数: "); for(i=0;i<3;i++){ scanf("%d",&a[i]); } printf("请输入5个整数: "); for(i=0;i<5;i++){ scanf("%d",&b[i]); } i=0; /*******space*******/ /*******space*******/ while(j<5){ c[t++]=b[j++]; } printf("结果为: "); for(i=0;i<t;i++){ printf("%d ",c[i]); } } 3.函数int trans(char p[])的功能是:统计字符串p中保存的英文单词个数(单词间用空格隔开),并将每个单词的首字母转换为大写字母。函数返回单词个数 #include<stdio.h> #include<string.h> #include<ctype.h> int trans(char p[]) { int i,len=strlen(p),n=0; /*******space*******/ /*******space*******/ } void main() { int n; char str[80]=" I am trying to rEAD"; printf("初始字符串为:%s ",str); n=trans(str); printf("初始字符串有: %5d 个单词 ",n); printf("处理后的字符串为:%s ",str); } 4.已知a是一个十六进制数的字符串,现将其转换为十进制数并输出 #include <stdio.h> #include <string.h> double trans(char a[]) { int i=0, j, m; double n, s,x; s=0.0; while( a[i]!='.' && a[i]) i++; /*******space*******/ /*******space*******/ return s; } 5.以下程序的功能是删去一维数组s中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例:若一维数组中的数据是: 2 3 3 3 3 4 4 4 4 4 10 10 10 10 13 13 15 15 18 18 结果是: 2 3 4 10 13 15 18 #include <stdio.h> int del(int s[],int n) { int i,j=1; /*******space*******/ /*******space*******/ } int main() { int s[]={2,3,3,3,3,4,4,4,4,4,10,10,10,10,13,13,15,15,18,18}; int i,m,n=sizeof(s)/sizeof(int); for(i=0;i<n;i++) printf("%d ",s[i]); m=del(s,n); printf(" "); for(i=0;i<m;i++) printf("%d ",s[i]); printf(" "); return 1; } 6.使用冒泡排序将题干中的列表进行降序排序 #include<stdio.h> void main(){ int i,j,t; int a[10]=[10,20,40,24,21,25,16,100,200,1]; /*******space*******/ /*******space*******/ } 7.从键盘上向数组中输入10个数字,输出该数组中的所有的和与平均数 #include<stdio.h> void main(){ float avg,sum=0; int i,a[10]; /*******space*******/ /*******space*******/ } 8. 将1-n(n<1000)中所有能被6整除、但不能被4整除的数存到一个一维数组中,并输出。 测试输入:200 测试输出:6 18 30 42 54 66 78 90 102 114 126 138 150 162 174 186 198 #include <stdio.h> void main() { int n,i,j=0,a[100]; /*******space*******/ /*******space*******/ for(i=0;i<j;i++) printf("%d ",a[i]); } 9.定义函数,往已排序的数组中添加数字,要求添加数字后数组还是按原来的规律排序。在主函数中,从键盘上输入一个数,调用函数实现数字插入指定的数组。输入数字6,输出新的数组为:1,3,5,6,7,9,11 #include<stdio.h> void insert(int *arr,int n,int num){ int i,j,flag=0; /*******space*******/ /*******space*******/ } void main(){ int arr[100]={1,3,5,7,9,11}; int num,i; printf("【输入你要插入的数字:】"); scanf("%d",&num); insert(arr,6,num); printf("【插入数字后的数组为:】"); for(i=0;i<7;i++){ printf("%d ",arr[i]); } printf(" "); } 10.输入一个字符串s,由若干个单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度 输入: "hello my hometown",输出: 8,解释: 最后一个单词hometown的长度为8 #include<stdio.h> int lengthOfLastWord(char *s) { int length,sum=0; for(length=0;s[length]!='\0';length++); /*******space*******/ /*******space*******/ return sum; } int main(){ int number; char s[100]; printf("【请输入由单词组成的字符串:】"); scanf("%d",&s); gets(s); number=lengthOfLastWord(s); printf("【最后一个单词的长度为:】 %d ",number); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 湖北省计算机类技能高考实操练习题 一.程序设计题 1.从键盘接收3个无序的整数,将这3个数据都插入到升序排列的数组中。 #include<stdio.h> #define N 10 void main( ) { int a[N+5]={4,6,9,12,15,18,23,26,32,39},p,x,i,j; for(i=0;i<N;i++){ printf("%d ",a[i]); } printf(" "); /*******space*******/ for(i=0;i<3;i++) { scanf(“%d”,&x); p=0; while(a[p]<x && p<N+i){ p++; } for(j=N+i-1;j>=p;j--){ a[j+1]=a[j]; } a[p]=x; } /*******space*******/ for(i=0;i<N+3;i++){ printf("%d ",a[i]); } printf(" "); } 2.有两个降序排列的集合A和B,A中无重复元素,B中也无重复元素,求集合B-A的差集(即:这些元素属于集合B但不属于集合A),存放于数组c中,并输出。 #include<stdio.h> void main() { int a[3],b[5],c[5]; int t=0,i,j=0; printf("请输入3个整数: "); for(i=0;i<3;i++){ scanf("%d",&a[i]); } printf("请输入5个整数: "); for(i=0;i<5;i++){ scanf("%d",&b[i]); } i=0; /*******space*******/ while(i<3 && j<5){ if(a[i]<b[j]) c[t++]=b[j++]; else if(a[i]>b[j]) i++; else{ i++; j++; } } /*******space*******/ while(j<5){ c[t++]=b[j++]; } printf("结果为: "); for(i=0;i<t;i++){ printf("%d ",c[i]); } } 3.函数int trans(char p[])的功能是:统计字符串p中保存的英文单词个数(单词间用空格隔开),并将每个单词的首字母转换为大写字母。函数返回单词个数 #include<stdio.h> #include<string.h> #include<ctype.h> int trans(char p[]) { int i,len=strlen(p),n=0; /*******space*******/ for(i=0;p[i];i++) { while(p[i]==32) i++; if(i<len) n++; if(p[i]>=’a’ && p[i]<=’z’) p[i]-=32; while(isalpha(p[i])) i++; } return n; /*******space*******/ } void main() { int n; char str[80]=" I am trying to rEAD"; printf("初始字符串为:%s ",str); n=trans(str); printf("初始字符串有: %5d 个单词 ",n); printf("处理后的字符串为:%s ",str); } 4.已知a是一个十六进制数的字符串,现将其转换为十进制数并输出 #include <stdio.h> #include <string.h> double trans(char a[]) { int i=0, j, m; double n, s,x; s=0.0; while( a[i]!='.' && a[i]) i++; /*******space*******/ for(j=0;j<i;j++) { m=a[j]-’0’; if(a[j]>=’A’) m-=7; s=s*16+m; } if(a[i]==’.’){ x=n=1.0/16; for(j=i+1;a[j];j++){ m=a[j]-’0’; if(a[j]>=’A’) m-=7; s=s+m*x; x=x*n; } } /*******space*******/ return s; } 5.以下程序的功能是删去一维数组s中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例:若一维数组中的数据是: 2 3 3 3 3 4 4 4 4 4 10 10 10 10 13 13 15 15 18 18 结果是: 2 3 4 10 13 15 18 #include <stdio.h> int del(int s[],int n) { int i,j=1; /*******space*******/ for(i=1;i<n;i++) { if(s[j-1]!=s[i]) s[j++]=s[i]; } return j; /*******space*******/ } int main() { int s[]={2,3,3,3,3,4,4,4,4,4,10,10,10,10,13,13,15,15,18,18}; int i,m,n=sizeof(s)/sizeof(int); for(i=0;i<n;i++) printf("%d ",s[i]); m=del(s,n); printf(" "); for(i=0;i<m;i++) printf("%d ",s[i]); printf(" "); return 1; } 6.使用冒泡排序将题干中的列表进行降序排序 #include<stdio.h> void main(){ int i,j,t; int a[10]=[10,20,40,24,21,25,16,100,200,1]; /*******space*******/ for(i=1;i<10;i++){ for(j=0;j<10-i;j++){ if(a[j]<a[j+1]){ t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } /*******space*******/ } 7.从键盘上向数组中输入10个数字,输出该数组中的所有的和与平均数 #include<stdio.h> void main(){ float avg,sum=0; int i,a[10]; /*******space*******/ for(i=0;i<10;i++){ scanf("%d",%a[i]); } for(i=0;i<10;i++){ sum=sum+a[i]; } avg=sum/10; printf("和=%f,平均值=%f",sum,avg); /*******space*******/ } 8. 将1-n(n<1000)中所有能被6整除、但不能被4整除的数存到一个一维数组中,并输出。 测试输入:200 测试输出:6 18 30 42 54 66 78 90 102 114 126 138 150 162 174 186 198 #include <stdio.h> void main() { int n,i,j=0,a[100]; /*******space*******/ scanf("%d",%n); for(i=1;i<n;i++) { if(i%6==0 && i%4!=0) a[j++]=i; } /*******space*******/ for(i=0;i<j;i++) printf("%d ",a[i]); } 9.定义函数,往已排序的数组中添加数字,要求添加数字后数组还是按原来的规律排序。在主函数中,从键盘上输入一个数,调用函数实现数字插入指定的数组。输入数字6,输出新的数组为:1,3,5,6,7,9,11 #include<stdio.h> void insert(int *arr,int n,int num){ int i,j,flag=0; /*******space*******/ for(i=0;i<n;i++){ if(num<=arr[i]){ for(j=n;j>i;j--){ arr[j]=arr[j-1]; } arr[i]=num; flag=1; break; } } if(flag==0){ arr[n]=num; } /*******space*******/ } void main(){ int arr[100]={1,3,5,7,9,11}; int num,i; printf("【输入你要插入的数字:】"); scanf("%d",&num); insert(arr,6,num); printf("【插入数字后的数组为:】"); for(i=0;i<7;i++){ printf("%d ",arr[i]); } printf(" "); } 10.输入一个字符串s,由若干个单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度 输入: "hello my hometown",输出: 8,解释: 最后一个单词hometown的长度为8 #include<stdio.h> int lengthOfLastWord(char *s) { int length,sum=0; for(length=0;s[length]!='\0';length++); /*******space*******/ for(length=length-1;length>=0;length--){ if(s[length]!=32) sum+=1; if(s[length]==32 && sum!=0) break; } /*******space*******/ return sum; } int main(){ int number; char s[100]; printf("【请输入由单词组成的字符串:】"); scanf("%d",&s); gets(s); number=lengthOfLastWord(s); printf("【最后一个单词的长度为:】 %d ",number); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

任务五 C语言数组(练习题)-湖北省计算机技能高考操作(应会)考纲技能通-第1页
1
任务五 C语言数组(练习题)-湖北省计算机技能高考操作(应会)考纲技能通-第2页
2

由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。