當前位置:首頁 » 編程語言 » c語言編程訓練題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編程訓練題

發布時間: 2023-04-12 20:37:13

『壹』 幾道c語言編程題

1.
#include<stdio.h>
#define N 100
void main()
{
int a,b,*p,maxLen,temp,i,k,arr[N]={0};
int linkrun(int a,int b,int *p);
printf("please input two integer:\n");
scanf("%d %d",&a,&b);
if (a>b) { temp=a; a=b; b=temp; }
p=arr;
maxLen=linkrun(a,b,p);
printf("sequence length is \n");

for (i=0;i<b-a+1;i++)
printf("%d \n",p[i]);

printf("\nMax Length is %d\n",maxLen);
}
int linkrun(int a,int b,int *p)
{
int i,j,n,max=0;
for (i=a;i<=b;i++)
{
n=i; j=1; //printf("---%d ",n);
while(n>1)
{
if (n%2==0)
n=n/2;
else
n=3*n+1;
j++; //printf("---%d ",n);
}
p[i-a]=j;
//printf("\n");
if (j>銷兄max) max=j;
}
return max;
}

2.
#include <stdio.h>
#include <string.h>
#define N 80

void main()
{
char s[N],s1[N],s2[N];
void inv(char b[]);
void merage(char a[],char b[],char c[]);
printf("please input the first string: "穗斗褲);
gets(s1);
printf("please input the second string: ");
gets(s2);
inv(s1);
printf("\nThe first string after inverting:\n");
printf("%s",s1);
merage(s1,s2,s);
printf("\nThe string after meraging:\n");
printf("%s",s);
}

void inv(char b[]) //將b指向的猜簡字元串逆序存放
{
int i=0, len=strlen(b);
char temp;
while(i<len)
{
len--;
temp=b[i];
b[i]=b[len];
b[len]=temp;
i++;
}
}
void merage(char a[], char b[], char c[])//合並字元串
{
int lena=strlen(a),lenb=strlen(b), len=0;
int i=0,j=0,k=0;

while(i<lena && j<lenb)
{
c[k]=a[i]; i++; k++;

c[k]=b[j]; j++; k++;
}

if (i>=lena)
{
while(j<lenb)
{
c[k]=b[j];
j++;
k++;
}
}
else
{
while(i<lena)
{
c[k]=a[i];
i++;
k++;
}
}
c[k]='\0';
}

3.
#include <stdio.h>
#define N 100
double fun(int n,int a[])
{
int i,k;
double sum=0;
k=0;
for(i=2;i<n;i++)
{
if(n%i==0)
{
printf("%d,",i);
a[k]=i; k++;
}
}
for (i=0;i<k;i++)
sum=sum+1.0/a[i];

return (sum);

}

void main()
{
int n,arr[N]={0};
double d;
printf("please input a integer less than 100: ");
scanf("%d",&n);
while(n>=100)
{
printf("the integer less than 100: ");
scanf("%d",&n);
}
d=fun(n,arr);
printf("\nsum=%lf \n",d);
}

4.
#include <stdio.h>
#define N 10

int max,min;

int fun(int *a,int n)
{
int i,maxi,mini;

max=min=a[0];
maxi=mini=0;

for(i=1;i<n;i++)
{
if(a[i]>max)
{
max=a[i];
maxi=i;
}
if(a[i]<min)
{
min=a[i];
mini=i;
}
}
a[maxi]=min;
a[mini]=max;
}

void main()
{
int i,n,arr[N]={0};

printf("please input the number of array elements: ");
scanf("%d",&n);

printf("\nplease input %d integers: ",n);

for(i=0;i<n;i++)
scanf("%d",&arr[i]);

printf("\n");

fun(arr,n);

for (i=0;i<n;i++)
printf("%d ",arr[i]);

printf("\nmax=%d min=%d\n",max,min);
}

5.
#include <stdio.h>
#include <string.h>
#define N 80
void main()
{
char a[N]= "ABCDEFGHIJK";
int m;
void fun(char *w,int m);
printf("please input a string: ");
gets(a);
printf("The original string:\n");
puts(a);
printf("Enter m: ");
scanf("%d",&m);
fun(a,m);
printf("\nThe string after moving:\n");
puts(a);
}

void fun(char *w,int m)
{
char b[N];
int i,j=0;
for(i=0;i<m;i++)
{
b[j]=w[i];
j++;
}
for (i=0;i<strlen(w)-m;i++)
w[i]=w[i+m];

for(j=0;j<m;j++)
{
w[i]=b[j];
i++;
}
w[i]='\0';
}

6.
#include <stdio.h>
#include <string.h>
#define SIZE 5

struct student
{
char num[6];
char name[6];
int age;
}stu[SIZE];

main()
{
int i;
void fun();
/*輸入*/
printf("please input %d students \n",SIZE);
for (i=0;i<SIZE;i++)
{
printf("學號: ");
scanf("%s",stu[i].num);
printf("姓名: ");
scanf("%s",stu[i].name);
printf("年齡: ");
scanf("%d",&stu[i].age);
}
fun();
for (i=0;i<SIZE;i++)
printf("學號:%s 姓名:%s 年齡:%d \n",stu[i].num,stu[i].name,stu[i].age);
printf("the result after sorting is:\n");
for (i=0;i<SIZE;i++)
printf("學號:%s 姓名:%s 年齡:%d \n",stu[i].num,stu[i].name,stu[i].age);
}

void fun()
{
int i,j;
struct student stu_temp;

for(i=0;i<SIZE;i++)
{
for (j=i+1;j<SIZE;j++)
if (strcmp(stu[i].name,stu[j].name)<0)
{
stu_temp=stu[i];
stu[i]=stu[j];
stu[j]=stu_temp;
}
if (strcmp(stu[i].name,stu[j].name)==0)
{
if (stu[i].age<stu[j].age)
{
stu_temp=stu[i];
stu[i]=stu[j];
stu[j]=stu_temp;
}
}
}
}

給我追加分數吧~~咱一個學校的應該!

『貳』 C語言編程題

#include<stdio.h>
voidmain(){
inta,b,i,j,k=1;
scanf("%d%d",&a,&b);
if(a>燃檔睜卜0&&b>0)
for(i=1;i<a;i++)
for(j=1;j<a;j++)
if(i+j==a&&i*2+j*4==b)
{k=0;printf(" %d%d",i,j);}
if(a<=0||b<=0||k)
printf("此題無皮早亂解");
}

運行示例:

『叄』 c語言編程題

//1.輸入一個字元串和整數n,將前n個字元復制到另一個字元串中並輸出。
#include<stdio.h>
void
main()
{
char
a[50];
char
b[50];
printf("輸入一個字元串:\n");
int
n;
gets(a);
printf("輸入一個整數\n");
scanf("%d",&n);
int
i;
for(i=0;i<n;i++)
{
b[i]=a[i];
printf("%c",b[i]);

}
printf("\n");

}

『肆』 C語言編程練習題

我也是薯培橡初學者,編了好長時數旁間
# include <stdio.h>
# include <malloc.h>
struct node
{
int date;
struct node *next;
};
struct node *create(int n)
{
struct node *head,*s1,*r;
int i,m;

head=NULL;
for(i=1;i<=n;i++)
{
scanf("%d",&m);
s1=(struct node *)malloc(sizeof(struct node));
s1->date =m;
if(head==NULL)head=s1;
else r->next =s1;
r=s1;

}
if(r) r->next =NULL;
return head;
}
void main()
{
int n,i,j;
struct node *head,*p,*q,*r;
printf ("input n:");
scanf ("%d",&n);
head=create (n);
p=head;
while(p!=NULL)
{
printf("%d ",p->date);
p=p->next;
}
printf("\n");
p=head;
for(i=1;i<n;i++)
{
if(i==n-1)
q=p;
p=p->next;
}
r=head;
head=p;
for(i=1;i<n;i++)
{
p->中猜next =q;
p=q;
q=r;
for(j=1;j<n-i-1;j++)
{

q=q->next ;
}
}
p=head;
for(i=1;i<=n;i++)
{
printf("%d ",p->date);
p=p->next;
}
}

『伍』 c語言程序設計習題!!10道

1. 在C程序中,只能用於整型變數的運算符是___ 求余(%)___。
2. 在C語言中,char類型變數占 2 個位元組。
3. 若a已定義為double類型,請寫出從鍵盤給a輸入數據的語句 scanf("%lf",&a); 。
4. 為使以下程序能正確運行,請填空。
#include<stdio.h>
#include<math.h>
main()
{ double x, y;
scanf("%lf%lf",&x,&y);
printf("y=%f\n", pow(x,y));}
5. 以下程序執行後的輸出結果是 -2 。
main()
{ int m=3,n=4,x;
x=-m++;
x=x+8/++n;
printf("%d\n",x); }
6. 以下程序的輸出結果是 10 20 0 。
main()
{ int a,b,c;
a=10; b=20; c=(a%b<1)||(a/b>1);
printf("%d %d %d\n",a,b,c); }
7. 以下程序中調用fun函數,對主函數x和y中的值進行對調。請填空。
void fun( double *a, double *b)
{ double x;
x=*a; *a=*b ; *b=x ; }
main()
{ double x,y;
printf(「Enter x, y : 「); scanf(「%lf%lf」,&x,&y);
fun( x,y);
printf(「x=%f y=%f\n」,x,y );}
8. C語言規定:字元串以 '\0' 作為結束標志。
9. 以下程序的輸出結果是 3 。
long fun( int n)
{ long t;
if ( n==1 || n==2 ) t=1;
else t=fun(n-1) + fun(n-2);
return ( t );
}
main( )
{ printf(「%d\n」,fun(4) );}
10. 設有定義:
struct date
{ int year, month, day ; } d1;
請寫出利用輸入語句,為變數d1中的year成員從鍵盤輸入數值的語句 scanf ("%d",&(d1.year)); 。

『陸』 C語言編程題

12.int main()

{
for(int i=1;i<=9;i++)
{
for(int j=i;j<=9;j++)
cout<<i<<"*"<<j<<"="<<i*j<<" ";
cout<姿跡攔<endl;
}

return 0;
}
13.int main()

{int count=0;
for(int i=1000;i<10000;i++)
if(i%10==8&&i%4==0)

count++;

cout<<count<<endl;

return 0;
}
7.
#define N 5
int main()

{int fish_num0=1,flag=0,fish_num;
while(flag!=1)
{ fish_num=fish_num0;
int count=0;
for(int i=N;i>=1&&fish_num/N>0;i--)
{
fish_num=fish_num-1;
if(fish_num%N==0&&fish_num/N>0) count++;
fish_num=fish_num/跡胡N*(N-1);
}
if(count==N) flag=1;
fish_num0++;
}

cout<<fish_num0-1<<endl;

return 0;
}
這是用C++寫州告的,在tc上運行時稍改一下輸入輸出函數即可!

『柒』 《C語言程序設計》練習題

一、選擇題
1、C語言規定,在一個源程序中,main()函數的位置(C )。
A) 必須在最開始 B)必須在最後
C) 可以任意 D) 必須在系統調用的庫函數後面

這題你死記就行,你看看這個
任何一個C++程序都必須定義一個main函數,它的返回類型總是int類型。這個函數由操作系統來調用,在main函

數執行完以後,程序也就終止了。 main也可以使用return向操作系統返回一個值,使用操作系統的命令可以檢測

main的返回值。一般約定在main返回0時,表示程序運行過程中沒有出現錯誤,其它非零值表示程序出現異常情況。
若沒有為main指定返回值,這樣返回值是任意的。

2、若x和y都是int 型變數,x=100,y=200,且有以下程序段,printf(「%d」,(x,y));則其輸出結果是( A)。
A) 200 B) 100 C) 100 200 D) 輸出不確定值

(x,y)這是個逗號表達式,表達式的值為最後一個逗號後面表達式的值,因為前面有一個%d,所以輸出 的是y的



3、合法的C語法字元常量是(C )。
A) 「A」 B) 65 C) 『\t』 D) A

字元都是由兩個單引號括起來的,死記, a)為字元串

4、表達式「3!=4」的值是(A )。
A) 1 B) 0 C) T D) F

!=是c語言的邏輯運算符,3!=4為真,多以得1, 3=4為假,值為0

5、 int a=1,b=2,c=3,d=4,執行下列程序後x的值為( C)。
if(a>b) x=1;else if (c>d) x=2;else x=3;
A) 1 B) 2 C) 3 D) 4

如果a>b,1>2為假,不執行x=1,執行else if(c>d),判斷:3>4為假,不執行x=2,執行=3,完

6、以下程序的輸出結果是(D)。
Int x=10,y=3,z;printf(「%d\n」,z=(x%y,x/y));
A)1 B) 0 C) 4 D) 3

逗號表達式,x%y,10%3,商3餘1,模取余數1,x/y,10/3,商3餘1,除法取商3,逗號表達式,表達式的值為最後一

個逗號後面表達式的值

7、為表示x≥y≥z,應使用C語言表達式(A )。
A) (x>=y)&&(y>=z) B) (x>=y) AND (y>=z)
C) (x>=y>=z) D) (x>=y) & (y>=z)

關系運算符,x>=y與y>=z必須是同時成立的,因此要用邏輯運算符&&,&&與的意思

8、合法的數組定義是( a )。
A) int a[ ]=」string」; B) int a[5]={0,1,2,3,4,5};
C) char a=」string」; D) char a[ ]={「01234」};

a不指定數組長度定義,正確
b數組長度為5,就是裡面有5個數組元素,多了一個數組元素
c定義a不是數組而是一個變數,素組應該是a[]
d是錯的,字元串是這樣定義的:char a[ ]={'0','1','2','3','4','\0'};
[4]中數字是數組長度,說明裡面有幾個元素

9、設x和y均為int型變數,則語句「x+=y;y=x-y;x-=y;」的功能是(D)。
A) 把x和y按從小到大排列 B)把x和y按從大到小排列
C)無確定結果 D)交換x和y中的值

x+=y等同於x=x+y,把x加y的值賦給x,x現在存的是x與y的和
y=x-y把x減y的值賦給y,x現在存的是x與y的和 (x+y)-y=x,把x的值給y,y存x的值
x-=y等同於x=x-y,把x減y的值賦給x,(x+y)-y=x,現在的後面的y存的是x的值,做完後x里存的值是y,完成交換

10、若已定義x和y為double類型,則表達式「x=1,y=x+3/2」的值是(C)。
A) 1 B)2 C) 2.0 D) 1.0

逗號表達式,先讓x=1在算y=x+3/2,得2,因為是double類型,所以有小數點

11、下列條件語句中,功能與其他語句不同的是 (D)
A) if(a) printf("%d\n",x); else printf("%d\n",y);
B) if(a==0) printf("%d\n",y); else printf("%d\n",x);
C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);
D) if(a==0) printf("%d\n",x); else printf("%d\n",y);

a 如果a為真輸出x,如果a為假輸出y
b 如果a==0,也就是為假,輸出y,a為真輸出x,同a
c 如果a!=0為真,輸出x,a為假輸出y同上
d 如果a為假輸出x,如果a為真輸出y,與以上的都不同

12、以下能正確定義二維數組的是 (C)
A) int a[][3]; B) int a[][3]=2{2*3};
C) int a[][3]={0}; D) int a[2][3]={{1},{2},{3,4}};

a 沒有給數組賦初值
b {}里不能有*
c 正確,記住第一個[]中可以為空,第二個[]不能為空,死記
d a[2][3] 的意思是有兩個一維數組,每個一維數組里有3個元素,{{1},{2},{3,4}}; 她的意思是三個數組,{}中的每一個{}代表一個數組,里邊的數為數組元素

13、用C語言編寫的代碼程序 (B)
A)可立即執行 B)是一個源程序
C)經過編譯即可執行 D)經過編譯解釋才能執行

死記

『捌』 10道經典的C語言例題(含參考程序)


1.列印出所有的「水仙花數」,所謂「水仙花數」是指一個三位數,其各位數字立方和等於該數本身。例如,153是一個「水仙花數」,因為153=1^3+5^3+3^3。

#include

#include

int main()

{

int _wei,shi_wei,ge_wei,i,sum=0;

for(i=100;i<1000;i++)

{

_wei=i/100;

shi_wei=(i%100)/10;

ge_wei=i%10;

if(i==pow(_wei,3)+pow(shi_wei,3)+pow(ge_wei,3))

{

printf("%d ",i);

sum++;

if(sum%5==0)

printf(" ");

}

}

printf(" ");

return 0;

}

2.請輸入任意兩個整數x和y,求其最大公約數和最小公倍數。

#include

int main()

{

int x,y,min,max,i;

printf("請輸入任意兩個整數:");

scanf("%d%d",&x,&y);

min=x>y?y:x;

max=x>y?x:y;

for(i=min;i>0;i--)

if(x%i==0&&y%i==0)

{

printf("這兩個整數的最大公約數為:%d ",i);

break;

}

for(i=max;i<=x*y;i++)

if(i%x==0&&i%y==0)

{

printf("這兩個整數的最小公倍數為:%d ",i);

break;

}

return 0;

}

3.輸入一行字元,分別統計出其中英文字母、空格、數字和其它字元的個數。

#include

#include

#define N 50

int main()

{

int sum1=0,sum2=0,sum3=0,sum4,i=0;

char str[N];

printf("請輸入一串字元串:");

scanf("%s",str);

for(i=0;i<strlen(str);i++) p=""> </strlen(str);i++)>

{

if((str[i]>='a'&&str[i]='A'&&str[i]<='Z'))

sum1++;

if(str[i]==' ')

sum2++;

if(str[i]>=Ɔ'&&str[i]<=Ə')

sum3++;

}

sum4=strlen(str)-sum1-sum2-sum3;

printf("英文字母的個數:%d ",sum1);

printf("空格的個數:%d ",sum2);

printf("數字的個數:%d ",sum3);

printf("其他符號的個數:%d ",sum4);

return 0;

}

4.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。

#include

#include

int main()

{

int a,n,s=0,i,x=0,y=0;

printf("請輸入整數a的值:");

scanf("%d",&a);

printf("請輸入相加的個數n:");

scanf("%d",&n);

for(i=0;i<n;i++) p=""> </n;i++)>

{

x=y+2*pow(10,i);

y=x;

s=s+x;

}

printf("s=%d ",s);

return 0;

}

5.一個數如果恰好等於它的因子之和,這個數就稱為「完數」。例如6=1+2+3。編程找出1000以內的所有完數。

#include

int main()

{

int sum=0,i,j;

printf("在1000以內的完數有:");

for(i=2;i<=1000;i++)

{

for(j=1;j<i;j++) p=""> </i;j++)>

if(i%j==0)

sum=sum+j;

if(sum==i)

printf("%d ",i);

sum=0;

}

printf(" ");

return 0;

}

6.輸入一個不多於5位的正整數,要求:1、求它是幾位數;2、逆序列印出個位數字。

#include

int pows(int a,int n)

{

int sum=1,i;

for(i=0;i<n;i++) p=""> </n;i++)>

sum=sum*a;

return sum;

}

int main()

{

int n,i,k,x;

printf("n=");

scanf("%d",&n);

for(i=1;i<6;i++)

if(n/pows(10,i)==0)

{

printf("%d ",i);

k=i;

break;

}

for(i=0;i<k;i++) p=""> </k;i++)>

{

x=n/pows(10,i)%10;

printf("%d",x);

}

printf(" ");

return 0;

}

7.輸入一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。

#include

int main()

{

int n,a[5],i=0;

printf("請輸入一個5位數:");

scanf("%d",&n);

while(n!=0)

{

a[i]=n%10;

n=n/10;

i++;

}

if(a[0]==a[4]&&a[1]==a[3])

printf("這個數是迴文數 ");

else

printf("這個數不是迴文數 ");

return 0;

}

8.利用遞歸演算法,將所輸入的5個字元,以相反順序列印出來。

#include

void digui(char a[],int n)

{

if(n==1)

printf("%c",a[0]);

else

{

printf("%c",a[n-1]);

digui(a,n-1);

}

}

int main()

{

char str[5];

printf("請輸入5個字元:");

scanf("%s",str);

digui(str,5);

printf(" ");

return 0;

}

9.有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13…球出這個序列的前20項之和。

#include

int main()

{

int i,a=1,b=1;

float sum=0.0;

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

{

sum=sum+(float)(a+i)/b;

b=a+i;

a=i;

}

printf("sum=%f ",sum);

return 0;

}

10.利用遞歸演算法求5!。

#include

int digui(int n)

{

if(n==1)

return 1;

else

return n*digui(n-1);

}

int main()

{

int n,sum;

printf("n:");

scanf("%d",&n);

sum=digui(n);

printf("sum=%d ",sum);

return 0;

}

『玖』 C語言編程題

根據題意:
題目1:函數參數是除數(這里傳值8),返回滿足條件的數字和。
題目2:函數參數是要找的項目數(這里傳值10),返回對應項的值。

#include<stdio.h>

#define MIN 50

#define MAX 1000

int fa(int a);//對應題目1的函數,參數:要除的數,返回可以被整除的數之和

int getByIndex(int n);//對應題目2,返回數列第n項,錯誤返回-1

int main()

{

printf("1、%d~%d之間能被%d整除的數字之和為:%d ",MIN,MAX,8,fa(8));

printf("2、數列頭三個數為4,5,6,以後的每個數為前三數和,求此數列第%d項:%d ",10,getByIndex(10));

return 0;

}

int fa(int a)//對應題目1的函數,參數:要除的數,返回可以被整除的數之和

{

int i,sum=0;

for(i=MIN;i<=MAX;i++)

if(i%a==0)

sum+=i;

return sum;

}

int getByIndex(int n)//對應題目2,返回數列第n項,錯誤返回-1

{

if(n<1)

return -1;

int i,nums[n];

nums[0]=4,nums[1]=5,nums[2]=6;

for(i=3;i<n;i++)

nums[i]=nums[i-1]+nums[i-2]+nums[i-3];

return nums[n-1];

}

『拾』 c語言編程題

#include <州野stdio.h>
int main()
{ double x,y;
printf("請輸入消費總額:\n");
scanf("%lf",&x);
if(x<滑滑1000) y=x;
else if(x<2000) y=0.9*x;
else if(x<3000) y=0.8*x;
else y=0.7*x;
printf("%.2lf\n",y);
return 0;
}

//祝你學信跡臘習進步