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

| 2份
| 11页
| 55人阅读
| 0人下载

内容正文:

湖北省计算机类技能高考实操练习题 一.程序设计题 1.使用指针将数组a[10]里的数据进行逆序 #include<stdio.h> #define N 10 void main( ) { int a[N]={4,6,9,12,15,18,23,26,32,39} int i,t,*p; /*******space*******/ /*******space*******/ for(i=0;i<N;i++){ printf("%d ",a[i]); } printf(" "); } 2.请补充完整函数sort(int *p,int m,int n),实现对p所指向的一维数组a从第m个元素开始的n个元素进行升序排序 #include <stdio.h> void sort(int *p,int m,int n) { /*******space*******/ /*******space*******/ } int main() { int a[16]={12,-56,32,6,-48,83,74,32,-20,77,51,-48,11,-69,20,63}; int i,m,n; do { scanf("%d,%d",&m,&n); }while(m<1||m>16||m+n>17); sort(a,m,n); for(i=0;i<16;i++) printf("%4d",a[i]); printf(" "); return 0; } 3.通过指针传递实现将一数组中的数据按相反顺序存放 void main() { int a[5],i; int *p,*q; for(i=0;i<5;i++){ scanf("%d,",&a[i]); } /*******space*******/ /*******space*******/ for(i=0;i<5;i++){ printf("%d ",a[i]); } printf(" "); } 4.编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除,例如:字符串为" A BC DEF ", 删除后的结果是" A BC DEF",要求函数形参采用指针变量。 #include <stdio.h> #include <string.h> void main() { void rtrim(char *p); char s[100]; gets(s); rtrim(s); puts(s); } void rtrim(char *p) { int i; /*******space*******/ /*******space*******/ } 5.利用指针输出数组中的和与平均数 #include <stdio.h> int main() { int arr[5] = {5, 4, 3, 2, 1}; int *ptr = arr; int sum = 0; float avg; /*******space*******/ /*******space*******/ } 6.编写一个函数,实现从用户处接收一个字符串,然后交换字符串中所有相邻的字符,要求使用指针实现 #include <stdio.h> #include <string.h> void swap(char *str); int main() { char str[100]; printf("【Enter a string:】 "); swap(str); printf("【Modified string: 】%s ", str); return 0; } void swap(char *str) { int len = strlen(str); /*******space*******/ /*******space*******/ } 7.编写一个函数,实现从用户处接收一个字符串,然后交换字符串的第一个字符和最后一个字符,要求使用指针实现 #include<stdio.h> #include<string.h> void swapFirstLast(char *str); int main() { char str[100]; printf("【Enter a string:】 "); fgets(str, sizeof(str), stdin); str[strcspn(str, " ")] = 0; swapFirstLast(str); printf("【Modified string:】 %s ", str); return 0; } void swapFirstLast(char *str) { int len = strlen(str); char temp; /*******space*******/ /*******space*******/ } 8.定义一个大小为50的整型数组,将数字1~50存入该数组,利用指针将数组中的值输出,每行5个,每个数字占4个符号位,左对齐测试输入:200 测试输出:6 18 30 42 54 66 78 90 102 114 126 138 150 162 174 186 198 #include <stdio.h> #include <stdlib.h> int main() { int array[50]; int i; int *p; for(i=0;i<50;i++) { array[i]=i+1; } p=array; for(i=1;i<=50;i++) { printf("%-4d",*p); /*******space*******/ /*******space*******/ return 0; } 9. 运用指针找出数组的最大数、最小数以及二者的差 #include <stdio.h> #define N 6 void pk(int a[N],int *p1,int *p2) { int i=0; *p1=*p2=a[0]; for(i=0;i<N;i++) { /*******space*******/ /*******space*******/ } void main() { int i=0,max,min; int a[N]; printf("put in the number: "); for(i=0;i<N;i++) { scanf("%d",&(a[i])); } pk(a,&max,&min); printf(" max is:%d min is:%d 差距 is:%d ",max,min,max-min); } 10.输入一个字符串s,由若干个单词组成,运用指针将所有大写字符转换成小写,小写转换为大写 int main(){ char s[100]; int i; printf("【请输入由单词组成的字符串:】"); scanf("%s",&s); /*******space*******/ /*******space*******/ } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $ 湖北省计算机类技能高考实操练习题 一.程序设计题 1.使用指针将数组a[10]里的数据进行逆序 #include<stdio.h> #define N 10 void main( ) { int a[N]={4,6,9,12,15,18,23,26,32,39} int i,t,*p; /*******space*******/ for(i=0;i<N/2;i++) { t=*p; *p=*(p+N+i); *(p+N+i)=t; } /*******space*******/ for(i=0;i<N;i++){ printf("%d ",a[i]); } printf(" "); } 2.请补充完整函数sort(int *p,int m,int n),实现对p所指向的一维数组a从第m个元素开始的n个元素进行升序排序 #include <stdio.h> void sort(int *p,int m,int n) { /*******space*******/ int i, j, temp; int *start = p + m - 1; for(i = 0; i < n - 1; i++) { for(j = i + 1; j < n; j++) { if(*(start + i) > *(start + j)) { temp = *(start + i); *(start + i) = *(start + j); *(start + j) = temp; } } } /*******space*******/ } int main() { int a[16]={12,-56,32,6,-48,83,74,32,-20,77,51,-48,11,-69,20,63}; int i,m,n; do { scanf("%d,%d",&m,&n); }while(m<1||m>16||m+n>17); sort(a,m,n); for(i=0;i<16;i++) printf("%4d",a[i]); printf(" "); return 0; } 3.通过指针传递实现将一数组中的数据按相反顺序存放 void main() { int a[5],i; int *p,*q; for(i=0;i<5;i++){ scanf("%d,",&a[i]); } /*******space*******/ p=a; q=a+4; while(p<q){ i=*p; *p=*q; *q=i; } /*******space*******/ for(i=0;i<5;i++){ printf("%d ",a[i]); } printf(" "); } 4.编写函数rtrim,用来删除字符串尾部的空格,首部和中间的空格不删除,例如:字符串为" A BC DEF ", 删除后的结果是" A BC DEF",要求函数形参采用指针变量。 #include <stdio.h> #include <string.h> void main() { void rtrim(char *p); char s[100]; gets(s); rtrim(s); puts(s); } void rtrim(char *p) { int i; /*******space*******/ for(i=strlen(p)-1;i>=0;i--) { if(p[i]!=’ ’) break; p[i]=’\0’; } /*******space*******/ } 5.利用指针输出数组中的和与平均数 #include <stdio.h> int main() { int arr[5] = {5, 4, 3, 2, 1}; int *ptr = arr; int sum = 0; float avg; /*******space*******/ for(int i=0;i<5;i++) { sum=sum+*ptr; ptr++; } /*******space*******/ } 6.编写一个函数,实现从用户处接收一个字符串,然后交换字符串中所有相邻的字符,要求使用指针实现 #include <stdio.h> #include <string.h> void swap(char *str); int main() { char str[100]; printf("【Enter a string:】 "); swap(str); printf("【Modified string: 】%s ", str); return 0; } void swap(char *str) { int len = strlen(str); /*******space*******/ char temp; char *p=str; for(int i=0;i<len-1;i+=2){ temp=*(p+i); *(p+i)=*(p+i+1); *(p+i+1)=temp; } /*******space*******/ } 7.编写一个函数,实现从用户处接收一个字符串,然后交换字符串的第一个字符和最后一个字符,要求使用指针实现 #include<stdio.h> #include<string.h> void swapFirstLast(char *str); int main() { char str[100]; printf("【Enter a string:】 "); fgets(str, sizeof(str), stdin); str[strcspn(str, " ")] = 0; swapFirstLast(str); printf("【Modified string:】 %s ", str); return 0; } void swapFirstLast(char *str) { int len = strlen(str); char temp; /*******space*******/ if(len>1){ temp=*str; *str=*(str+len-1) *(str+len-1)=temp } /*******space*******/ } 8.定义一个大小为50的整型数组,将数字1~50存入该数组,利用指针将数组中的值输出,每行5个,每个数字占4个符号位,左对齐测试输入:200 测试输出:6 18 30 42 54 66 78 90 102 114 126 138 150 162 174 186 198 #include <stdio.h> #include <stdlib.h> int main() { int array[50]; int i; int *p; for(i=0;i<50;i++) { array[i]=i+1; } p=array; for(i=1;i<=50;i++) { printf("%-4d",*p); /*******space*******/ if(i%5==0) { printf(“ ”); } p++; /*******space*******/ return 0; } 9. 运用指针找出数组的最大数、最小数以及二者的差 #include <stdio.h> #define N 6 void pk(int a[N],int *p1,int *p2) { int i=0; *p1=*p2=a[0]; for(i=0;i<N;i++) { /*******space*******/ if(a[i] > *p1){ *p1 = a[i]; } if(a[i] < *p2){ *p2 = a[i]; } /*******space*******/ } void main() { int i=0,max,min; int a[N]; printf("put in the number: "); for(i=0;i<N;i++) { scanf("%d",&(a[i])); } pk(a,&max,&min); printf(" max is:%d min is:%d 差距 is:%d ",max,min,max-min); } 10.输入一个字符串s,由若干个单词组成,运用指针将所有大写字符转换成小写,小写转换为大写 int main(){ char s[100]; int i; printf("【请输入由单词组成的字符串:】"); scanf("%s",&s); /*******space*******/ char *p = s; while(*p != '\0') { if(*p >= 'A' && *p <= 'Z') { *p = *p + 32; }else if(*p >= 'a' && *p <= 'z'){ *p = *p - 32; } p++; } printf("【转换后的字符串:】%s ", s); /*******space*******/ } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $

资源预览图

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

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