求各位高手帮忙作一下C语言作业

编程题(以下习题均要求用指针方法处理):

1、 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。

2、 用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能。

3、从键盘上任意输入20个数,要求找出其中的素数,并将这些素数按升序排列。(必须用模块化、用指针实现)
编程题:

1、从键盘上输入10个数,用选择排序的改进算法对这10个数排序(按升序),并输出。

2、编写程序求Fibonacci数列的前10项,每行只允许输出5个数。

3、用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能。

4、编写程序求一个6×6矩阵的对角线之和,并求出所有数中的最大值及其下标。

5、写一个函数,输入一个4位数字,要求输出这4个数字字符,每两个数字字符间空一个空格。如输入1990,输出“1 9 9 0”。

6、用递归函数求n!。

7、输入两个整数,求它们相除的余数,用带参的宏来实现。
前三题为一组,后七题为一组,不一定全做,每组做几个题就可以了.今天交作业,求各位大虾帮帮忙!!!

所有程序在win-tc和Dev-c++下运行通过。
现在所有的题目都有答案了。
第一题:
#include <stdio.h>
#define N 10
int main()
{
int a[N],i,m=0,n=0,max,min,*p;
p=a;
printf("Please input %d elements of the matrix :\n",N);
for(i=0;i<N;i++)
scanf("%d",p+i);
printf("The array you input is:\n");
for(i=0;i<N;i++)
printf("%5d",*(p+i));
printf("\n");
max=min=*p;
for(i=1;i<N;i++)
{ if(max<*(p+i))
{m=i;max=*(p+i);}
if(min>*(p+i))
{n=i;min=*(p+i);}
}
*(p+n)=*p;
*p=min;
*(p+m)=*(p+N-1);
*(p+N-1)=max;
printf("The matrix you want is:\n");
for(i=0;i<N;i++)
printf("%5d",*(p+i));
printf("\n");
system("pause");
return 0;
}
或者
#include <stdio.h>
int main(void) /* 找出队列中最小数放最左边 最大数放最右边*/
{ int num[10];
/* int num[10]={9,7,3,6,2,10,1,5,8,4}; */
int max,min,i,j,k;
printf("input 10 numbers:\n");
for(i=0;i<10;i++)
scanf("%d",&num[i]);
for(i=0;i<10;i++)
printf("%d ",num[i]);
printf("\n");
max=min=num[0];
for(i=1;i<10;i++)
{
if(num[i]>max)
{max=num[i];
j=i;
}
else if(num[i]<min)
{min=num[i];
k=i;
}
}
if(j!=9)
{ num[j]=num[9];num[9]=max;
}
if(k!=0)
{ num[k]=num[0];num[0]=min;
}
printf("output 10 new numbers:\n");
for(i=0;i<10;i++)
printf("%d ",num[i]);
printf("\n");
getch();
return 0;
}

第二题:
#include <stdio.h>
int length(char *p) /* strlen()函数原型,求一个字符串的长度 */
{
int n=0;
while(*p!='\0')
{ n++;
p++;
}
return(n);
}
int main(void)
{
int len;
/* int length(); */
char str[80];
printf("\nInput a string(<80 characters):");
gets(str); /*如果这里用scanf()函数,那么一行中空格后的输入字符都无效*/
len=length(str); /*因为scanf()函数以空格或tab键或回车键结束*/
printf("The string is:%s\n",str);
printf("The length of the string is %d",len);
getch();
return 0;
}

#include <stdio.h> /* strcmp函数原型 */
int strcmp(char *p1,char *p2)
{int i=0;
while (*(p1+i)==*(p2+i))
if (*(p1+i++)=='\0') return 0; /* 这里是先判断*(p1+i)=='\0',然后再是i++ */
return (*(p1+i)-*(p2+i));
}
int main(void)
{char s1[80],s2[80];
int i,j;
char *p1,*p2;
printf("Input two strings:(<80 characters each)\n");
gets(s1);
gets(s2);
p1=s1;
p2=s2;
j=strcmp(p1,p2);
printf("result:%d\n",j);
getch();
return 0;
}

#include "string.h" /* 计算字符串中子串出现的次数 说明:这里子串是str2,母串是str1 */
#include "stdio.h"
main()
{ char str1[80],str2[80],*p1,*p2;
int sum=0;
printf("\nPlease input two strings\n");
gets(str1);
gets(str2);
p1=str1;p2=str2;
while(*p1!='\0')
{
if(*p1==*p2)
{while(*p1==*p2&&*p2!='\0')
{p1++;
p2++;}
}
else
p1++;
if(*p2=='\0')
sum++;
p2=str2;
}
printf("Times of str2 appeared in str1 are:%d",sum);
getch();
}
其它类似,仿照来写。

第三题:
/*从键盘上任意输入20个数,要求找出其中的素数,并将这些素数按升序排列。(必须用模块化、用指针实现)*/
#include <stdio.h>
#include <math.h>
#define N 20

void sort(int *q,int j)
{int i,k,t;
for(i=0;i<j-1;i++) /* 选择排序 */
for(k=i+1;k<j;k++)
if(*(q+i)>*(q+k))
{t=*(q+i);
*(q+i)=*(q+k);
*(q+k)=t;
}

}
int main()
{ int i,j=0,k,flag,a[N],b[N],*p,*q;
p=a;
q=b;
printf("Please input %d numbers:\n",N);
for(i=0;i<N;i++)
{ flag=0;
scanf("%d",p+i);
for(k=2;k<=sqrt(*(p+i));k++) /* 这里把判断素数放在了这里 */
if((*(p+i)%k)==0){flag=1;break;}
if(flag==0)
{ *(q+j)=*(p+i);j++;}
}
sort(q,j);
printf("The prime you want are:\n");
for(i=0;i<j;i++)
printf("%-5d",*(q+i));
getch();
return 0;
}

第七题:
/* 输入两个整数,求它们相除的余数,用带参的宏来实现 */
#include <stdio.h>
#define MOD(a,b) ((a)%(b))
int main()
{ int a,b;
printf("Please input a and b:\n");
scanf("%d%d",&a,&b);
printf("%d%%%d= %d\n",a,b,MOD(a,b));
system("pause");
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-12-25
1:从键盘上输入10个数,用选择排序的改进算法对这10个数排序(按升序),并输出。

//选择法排序
#include <stdio.h>
main(void)
{
int a[10],i,j,k,t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=0;j<9;j++)
{ k=j;
for(i=j+1;i<10;i++)
if(a[k]>a[i])
k=i;
{t=a[j];a[j]=a[k];a[k]=t;}
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
}

2:编写程序求Fibonacci数列的前10项,每行只允许输出5个数。

#include <Stdio.h>
main()
{
int a[10]={1,1};
int i;
for(i=2;i<10;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<10;i++)
{
printf("%5d",a[i]);
if((i+1)%5==0)
printf("\n");
}

}

4:编写程序求一个6×6矩阵的对角线之和,并求出所有数中的最大值及其下标。

#include <Stdio.h>
main(void)
{
int a[6][6];
int i,j,sum=0,t,k,max;
for(j=0;j<6;j++)
for(i=0;i<6;i++)
scanf("%d",&a[j][i]);
max=a[0][0];
for(j=0;j<6;j++)
for(i=0;i<6;i++)
if(max<a[j][i])
{max=a[j][i];t=j;k=i;}
printf("max:a[%d][%d]=%d\n",t,k,max);

for(i=0;i<6;i++)
sum=sum+a[i][i]+a[5-i][i];
printf("sum=%d",sum);
}

5:写一个函数,输入一个4位数字,要求输出这4个数字字符,每两个数字字符间空一个空格。如输入1990,输出“1 9 9 0”。

#include <Stdio.h>
main(void)
{
char a[7],n[4];
int i;
scanf("%s",n);
for(i=0;i<4;i++)
a[2*i]=n[i];
for(i=1;i<6;i+=2)
a[i]=' ';
for(i=0;i<7;i++)
printf("%c",a[i]);
}
第2个回答  2008-12-25
第2题Fibonacci
#include<stdio.h>
int Fibonacci(int n)
{
if(n==1||n==2)return 1;
else return Fibonacci(n-1)+Fibonacci(n-2);
}
void main()
{
int i,j;
for(i=1,j=1;i<=10;i++,j++)
{
printf("%d ",Fibonacci(i));
if(j==5)printf("\n");
}
putchar('\n');
}
第3个回答  2008-12-24
给1块钱,我帮你做!

6.
#include <stdio.h>

int factor(int n)
{
if(n==1||n==0) return 1;
return n*factor(n-1)
}

int main()
{
int n;

scanf("%d",&n);
printf("n!=%d\n",factor(n));
return 0;
}
第4个回答  2008-12-24
二楼的 我学了三个月也会做哈哈
但太麻烦了吧
这么点分……
还有作业要自己做吗

C语言大作业,C语言高手们救下小弟啊```
这是我在大学做过的课程设计,你看看:\/ 程序功能:能完成每位学生的某门课程的平时成绩和期末考试成绩的录入,完成每位学生的总评成绩计算(平时成绩*30%+期末考试成绩*70%)并生成数据文件,生成分数段统计文件(不及格人数,60-69数,70-79人数,80-89人数,90-100人数,及格率),通过学生成绩的数...

求助各位C语言编程高手~帮我做3道题~
\/*一*\/ charpt[N+1]={0};memset(pt,'*',N);Diamond(pt,N,N);\/*二*\/ pairp;GCD_LCM(3,6,&p);printf("%d%d\\n",p.gcd,p.lcm);\/*三*\/ inta[]={32,9,45,22,15,48,47,8,55,1};Print(a,a+10);

请各位高手帮忙做几道c语言的编程题
int i;int a,b,c,d;\/\/ int m,n;for(i = 1000; i < 10000; i++){ a = i\/1000;b = i%1000\/100;c = i%100\/10;d = i%10;m = a*10+b;n = c*10+d;if((m+n)*(m+n) == i)printf("%d ",i);} } (4)include <stdio.h> void main(){ int a[10]={0,1,...

哪个高手告诉我用C语言怎么编“从键盘上输入一个正整数,计算该数的各...
void main(){ int a,s;s=1;printf("请输入一个整数");scanf("%d",&a);while (a>0){ s=s*(a % 10);a=a\/10;} printf("a=%d",s);}

求C语言高手编写程序:输出100之内所有个位数字为6且能被3整除的自然数...
include<stdio.h> void main(){ int i;for(i = 0;i < 10;i ++){ if(!((i+6)%3)) \/\/各位数字加和可被3整除的数字可被3整除,因为10a+b=9a+(a+b)printf("%d\\n",i*10+6);} }

C语言高手来一下帮我编个小程序
首先,我可以用字符串来做。我现在先把代码贴上:include <stdio.h> int main(){ char *str , *ch , *c[] = {"个位为:" , "十位为:" , "百位为:" , "千位为:" , "万位为:"};scanf("%s",str);int i = 0 ;\/\/要求1.求出它是几位数 printf("此数为%d位数\\n",(size...

C语言的几道考题,请各位高手帮忙,急!!!(追加50分)
第二题我算也等于-24 三题我答案和你的一样 四题 五题的S=0没什么作用,可以不写,最后的GETCH也可不写,我是没发现有什么用。六题 include<stdio.h> int stu(int a,int b,int c);int stu(int a,int b,int c){ int s;s=a*a+b*b+c*c;return s;} void main(){ int a,b...

C语言高手帮帮我!!!
i++=t*=i可以这样算.先算t*=i => t=(t*i); 再算 i++=t; => (i=t;i++;)第二题:第一次循环.k=1; if不运行得到a = b =s[1]-'0' 的ASC码.第二次循环k=2(也就是最后一次循环)=> a=s[1]-'0'+s[2]-'0'都用ASC码运算....

两道c语言题,谢谢帮帮忙
void main(){ while(true){ int a,i;printf("请输入一个整数\\n这个数以下的完全平方数将全部输出>:");scanf("%d",&a);getit(a);printf(haveit==true? "输出完毕!\\n":"%d 以下没有完全平方数!",a);\/\/循环结束还没有找到,说明a没有完全平方数,返回 } } void getit(int a){ f...

请各位C语言高手帮忙解决下面的问题。
int binary_find(int * a, int target, int low, int high){ if (low > high){ return -1;} else if (a[(low + high)\/2] == target){ return (low + high)\/2;} else if (a[(low + high)\/2] > target){ return binary_find(a, target, low, (low + high)\/2 - 1)...

相似回答