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