关于C语言的几道习题 急求高手解答!

本人有如下几题不清楚,希望高手帮忙解答,马上考试,希望大家快点。1、用冒泡排序法对输入的20个数进行降序排列并寸入数组中,然后输入一个数,查找该数是否在数组中存在,若存在... 本人有如下几题不清楚 , 希望高手帮忙解答 ,马上考试 ,希望大家快点。
1、用冒泡排序法对输入的20个数进行降序排列并寸入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出该数组中对应的下标值
2、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。
3、编一函数,将十进制整数转换为十六进制整数。
4、写出一通用函数,该函数从一个字符指针数组中寻找指定的一个字符串,若找到返回1,若找不到返回0。
以上4题望高手速来解答,要求在VC 或TC上可以正确运行。
谢谢
分数不是问题,写好了可以追加
只是希望大家快点,程序清晰一点就好(最好能付上说明)。
谢谢谢谢谢谢谢谢。。。。。
展开
 我来答
zss2003
2008-06-12 · TA获得超过1005个赞
知道小有建树答主
回答量:684
采纳率:0%
帮助的人:590万
展开全部
1、用冒泡排序法对输入的20个数进行降序排列并寸入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出该数组中对应的下标值
#include <stdio.h>
#define N 20
void main()
{
int arr[N];
int i,j,t,f;
printf("输入数组:\n");
for(i=0;i<N;i++)
scanf("%d",arr+i);

for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(arr[i]<arr[j])
{t=arr[i];arr[i]=arr[j];arr[j]=t;}

for(i=0;i<N;i++)
printf("%5d",arr[i]);
printf("输入要找的数:");
scanf("%d",&f);
for(i=0;i<N;i++)
if(f==arr[i])
printf("%d\n",i);
if(f>arr[0]||f<arr[N-1])
printf("null\n");
}
2、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。
#include <stdio.h>
#define N 100

void main()
{
char arr[N];
int i;
int ch=0,sp=0,num=0,other=0;
printf("输入字符串:\n");
gets(arr);
for(i=0;arr[i]!='\0';i++)
{
if((arr[i]>='a'&&arr[i]<='z')||(arr[i]>='A'&&arr[i]<='Z'))
ch++;
else if(arr[i]==' ')
sp++;
else if(arr[i]>='0'&&arr[i]<='9')
num++;
else
other++;
}
printf("字符%d,空格%d,数字%d,其他%d\n",ch,sp,num,other);
}
3、编一函数,将十进制整数转换为十六进制整数。
#include <stdio.h>
#define N 100

void main()
{
char arr[N];
int i=0;
long num=0;
printf("输入十六进制数:\n");
gets(arr);
while(arr[i]!='\0')
{
if(arr[i]=='A'||arr[i]=='a') num=num*16+10;
else if(arr[i]=='B'||arr[i]=='b') num=num*16+11;
else if(arr[i]=='C'||arr[i]=='c') num=num*16+12;
else if(arr[i]=='D'||arr[i]=='d') num=num*16+13;
else if(arr[i]=='E'||arr[i]=='e') num=num*16+14;
else if(arr[i]=='F'||arr[i]=='f') num=num*16+15;
else if(arr[i]>='0'&&arr[i]<='9') num=num*16+arr[i]-'0';
i++;
}
printf("%ld\n",num);
}
4、写出一通用函数,该函数从一个字符指针数组中寻找指定的一个字符串,若找到返回1,若找不到返回0。
#include <stdio.h>
#include <string.h>
#define N 5

int find(char *str[],char *abc)
{
int i;
for(i=0;i<N;i++)
if(strcmp(str[i],abc)==0)
return 1;
if(strcmp(str[N-1],abc)!=0&&i==N)
return 0;
}

void main()
{
char s[50],*arr[N]={"basic","come on","student","teacher","country"};
int flag;
printf("输入查找的字符串:\n");
gets(s);
flag = find(arr,s);
printf("%d\n",flag);
}
高金山
2008-06-12 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1673万
展开全部
1、用冒泡排序法对输入的20个数进行降序排列并寸入数组中,然后输入一个数,查找该数是否在数组中存在,若存在,打印出该数组中对应的下标值

#include <stdio.h>

#define N 20

int main()
{
int a[N]={0};
int i,j,t,n;

printf("输入%d整数:\n",N);
for(i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
//冒泡法排序
for(i=0;i<N-1;i++)
{
for(j=N-1;j>i;j--)
{
if(a[j-1]<a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
}
}
}

//输出数组
for(i=0;i<N;i++)
{
printf("%d ",a[i]);
}
printf("\n");

printf("输入一个数:");
scanf("%d",&n);
for(i=0;i<N;i++)
{
if(n==a[i])
{
printf("下标值:%d\n",i);
break;
}
}
return 0;
}

2、输入一行字符,分别统计出其中英文字母、空格、数字、和其他字符的个数。
#include <stdio.h>

int main()
{
int eng,space,digit,other;
char ch;

eng=space=digit=other=0;
while((ch=getchar())!='\n')
{
if((ch<='Z' && ch>='A')
||(ch<='z' && ch>='a'))
{
eng++;
}
else if(ch==' ')
{
space++;
}
else if(ch<='9' && ch>='0')
{
digit++;
}
else
{
other++;
}
}

printf("英文字母:%d, 空格:%d, 数字:%d, 其他字符:%d\n",
eng,space,digit,other);
return 0;
}

3、编一函数,将十进制整数转换为十六进制整数。
#include <stdio.h>
#include <stdlib.h>

void trans(int n,int m)
{
if(n)
{
trans(n/m,m);
if(n%m<10)
printf("%c",n%m+'0');
else
printf("%c",n%m-10+'A');
}
}

void main()
{
int n,m=16;

printf("输入十进制数N:");
scanf("%d",&n);

printf("十进制数%d转化成%d进制后的结果为:",n,m);
trans(n,m);
printf("\n");
}

4、写出一通用函数,该函数从一个字符指针数组中寻找指定的一个字符串,若找到返回1,若找不到返回0。
#include <stdio.h>
#include <string.h>

#define N 5

int find(char *a[],char *str)
{
int i;

for(i=0;i<N;i++)
{
if(strcmp(str[i],abc)==0)
{
return 1;
}
}
return 0;
}

void main()
{
char *a[N]={"basic","come on","student","teacher","country"};
char str[80];

puts("输入查找的字符串:\n");
gets(str);
if(find(a,str))
{
printf("找到\n");
}
else
{
printf("找不到\n");
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ppliang0415
2008-06-12 · TA获得超过621个赞
知道小有建树答主
回答量:257
采纳率:0%
帮助的人:0
展开全部
都编译好了,工作量很大啊!
1、
#include <stdio.h>
#include <string.h>
void main()
{

int temp[20],B,i;
int search;
printf("input the data\n");
for(i=0;i<20;i++)
scanf("%d",&temp[i]);

for(i=19;i>=0;i--)
for(int j=0;j<i;j++)
{
if(temp[j]<temp[j+1])
{
B=temp[j];
temp[j]=temp[j+1];
temp[j+1]=B;
}
}
printf("排序结果为:\n");

for(i=0;i<20;i++)

printf("%d ", temp[i]);

printf("\n");

printf("请输入要查找的值:\n");

scanf("%d",&search);
for(i=0;i<20;i++)

{
if(search==temp[i])
{
printf("你输入的数存在,下标为%d\n",i);
break;
}
else
if(search>temp[i])
printf("你输入的数不存在\n");
else
{
i++;
}
}

if(i==20)
printf("你输入的数不存在\n");

}

/****************************/
2、
#include <stdio.h>
#include <string.h>
void main()
{
int i=0;//英文字母数量
int j=0;//konge数量
int k=0;//数字数量
int others=0;//其他字符
char temp;//接收字符。
printf("Please input the string\n") ;

while(true)
{
scanf("%c",&temp);
if(temp=='\n')
break;
else
{
if(((temp>='a')&&(temp<='z'))||((temp>='A')&&(temp<='Z')))
{
i=i+1;
continue;
}
if((temp>='0')&&(temp<='9'))
{
j=j+1;
continue;
}
if(temp==' ')
{
k=k+1;
continue;
}
others++;
}
}
printf("字符数量: %d\n",i);
printf("数字数量: %d\n",j);
printf("空格数量: %d\n",k);
printf("其他数量: %d\n",others);
}

/*************************/
3、
#include <stdio.h>
#include <string.h>

void main()
{
char HEX[17] = {"0123456789ABCDEF"};
int num;
printf("请输入一个十进制整数:");
scanf("%d",&num);
int a[10];
int i=0;
int yushu;
while(num>0)
{
yushu=num%16;
a[i]=yushu;
num=num/16;
i++;
}
i--;
printf("转化为十六进制的数为:");
for(;i>=0;i--)//倒序输出
{
printf("%c",HEX[a[i]]);
}
printf("\n");
}

4、
#define findstring "You"
int find(char *string)
{
int counter=0;
int k=0;
int l=0;
counter=strlen(string);
for(k=0;k<(counter-4);k++)
for(l=0;l<2;l++)
if((string[l]=='Y')&&(string[l+1]=='o')&&(string[l+2]=='u'))
{
return (1);
break;
}
return(0);

}
/*****************/
4、
#define findstring "You"

int find(char *string)
{
int counter=0;
int i=0;
counter=strlen(string);
for(i=0;i<(counter-3);i++)
if((string[i]==findstring[0])&&(string[i+1]==findstring[1])&&(string[i+2]==findstring[2]))
{
return (1);
break;
}
return(0);
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式