发布时间 : 星期一 文章C语言必背的典型程序设计题目 - 数组、函数-------参考答案更新完毕开始阅读
3、定义两个函数,求两个数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
#include <>
int gct(int a,int b); int lcm(int a,int b); void main() {
int num1,num2;
printf(\ scanf(\
printf(\的最大公约数是:%d\\n\ printf(\的最小公倍数是:%d\\n\ }
int gct(int a,int b) {
int temp;
while(b!=0)/*利用辗除法,直到b为0为止*/ {
temp=a%b; a=b; b=temp; }
return a; }
int lcm(int a,int b) {
return a*b/gct(a,b); }
4、定义一个函数,用于将一个字符串反序存放。例如,原串为ABCDEF,则处理后的字符串为:FEDCBA。
#include <> #include <>
void reverse(char str[]); void main() {
char str[50];
puts(\请输入一行字符串:\ gets(str);
puts(\转换后的字符串为:\ reverse(str); puts(str); }
void reverse(char str[]) {
int i,len; char ch;
len=strlen(str);
for(i=0;i ch=str[i]; str[i]=str[len-1-i]; str[len-1-i]=ch; } } 或者逆置字符串的函数也可写为: void reverse(char str[]) { int i,j,len; char ch; len=0; while(str[len]!='\\0') //计算字符串长度 { len++; } for(i=0,j=len-1;i ch=str[i]; str[i]=str[j]; str[j]=ch; } } 5、定义函数,对给出年、月、日计算该天是该年的第几天。(可利用数组来实现)。 #include <> int days(int year,int month,int day); void main() { int year,month,day,d; printf(\请输入年、月、日:\\n\ scanf(\ d=days(year,month,day); printf(\这天是%d年的第%d天\\n\ } int days(int year,int month,int day) { int monthDays[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int d,i; d=day; if(month>2 && (year%4==0 &&year 0!=0 || year@0==0)) { monthDays[1]+=1; } for(i=0;i d+=monthDays[i]; } return d; } 6、编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上。 #include <> #include <> void replace(char *s,char c1,char c2); void main() { char str[50]=\ char c1='c',c2='j'; printf(\中的字符%c用字符%c代替后的结果为:\ replace(str,c1,c2); puts(str); } void replace(char *s,char c1,char c2) { int i; i=0; while(s[i]!='\\0') { if(s[i]==c1) { s[i]=c2; } i++; } } 7、写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 #include <> #include <> int strLength(char a[]); void main() { char str[50]; gets(str); printf(\ } int strLength(char a[]) { int i; i=0; while(a[i]!='\\0') { i++; } return i; } 8、编写输入数据函数、排序(冒泡法、选择法)函数、输出函数,完成10个数据的输入、排序和输出,在主函数中进行测试。 #include <> #include <> #define SIZE 10 void inputData(int a[],int n); //数组数据赋值 void selectedSort(int a[],int n); //选择排序 void bubbleSort(int a[],int n); //冒泡排序 void outputData(int a[],int n); //输出数据 void main() { int a[SIZE]; inputData(a,SIZE); outputData(a,SIZE); selectedSort(a,SIZE); bubbleSort(a,SIZE); outputData(a,SIZE); } void inputData(int a[],int n) { int i; printf(\请输入%d个整数:\\n\ for(i=0;i scanf(\ } void selectedSort(int a[],int n) //选择排序 { int i,j,t; for(i=0;i for(j=i+1;j if(a[j]>a[i]) { t=a[j]; a[j]=a[i]; a[i]=t; } } } } void bubbleSort(int a[],int n) //冒泡排序 { int i,j; for(i=0;i for(j=0;j if(a[j]>a[j+1]) { int t=a[j]; a[j]=a[j+1];a[j+1]=t; } } } } void outputData(int a[],int n) { } int i; printf(\数组为:\\n\ for(i=0;i printf(\ } printf(\ 9、利用递归函数,对一个给定的整数,输出其二进制形式。 #include<> void toBase(int n,int r) { if(n/r==0)printf(\ else { toBase(n/r,r); printf(\ } } 进制转换函数也可写为: void toBase(int n,int r) { int rem; rem=n%r; if(n/r>0) toBase(n/r,r); printf(\ } 10、利用递归函数,对一个给定的整数,输出其阶乘。 #include <> int fac(int n); void main() { int n,m; n=6; m=fac(n); printf(\ } int fac(int n) { if(n==1)return 1; else return n*fac(n-1); }