C语言必背的典型程序设计题目 - 数组、函数-------参考答案 联系客服

发布时间 : 星期六 文章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); }