任务六 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*******/
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$