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

求c語言編程題

發布時間: 2023-06-15 01:55:01

A. 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];

}

B. C語言編程題

1.將程序段填充完整(實現12個月每個月天數的輸出)
case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;
case 4: case 6: case 9: case 11: days=30;break;
case 2:
if((yy%4==0 && yy%100!=0) || yy%400==0) days=29;
else days=28;
break;
2.輸入4個整數a,b,c,d,編寫程序,將它們按從大到小的順序輸出(if語句實現)
int a,b,c,d;
scanf("%d %d %d %d",&a,&b,&c,&d);
if(a>b && a>c && a>d) printf("%d ",a);
if(b>a && b>c && b>d) printf("%d ",b);
if(c>a && c>b && c>d) printf("%d ",c);
if(d>a && d>b && d>c) printf("%d ",d);
3.假設獎金稅率如下(ma代表稅前獎金且ma>0,r代表稅率),利用switch語句編寫程序對輸入的一個獎金數,輸出稅率和應交稅款及實得獎金數(扣除獎金稅後)。
int ma;
float r,ts,sd;
scanf("%d",&ma);
switch(ma/1000)
{
case 0: r=0;break;
case 1: r=0.05;break;
case 2: r=0.08;break;
default: r=0

C. c語言編程題

C語言編程題
1.(*)求分數序列:1/2,2/3,3/5,5/8,8/13,13/21...... 前20項的和。
main()
{float i=1,j=2,t=0,s,n,m;
for(n=1;n<=20;n++)
s=i/j,m=i,i=j,j=m+j,t=t+s;
printf("t=%f",t);
}
2.(*)從鍵盤輸入一個字元串,再將其逆序輸出。(如:輸入abcde,輸出edcba)
main()
{int i;
char c[10];
scanf("%s",c);
for(i=9;i>=0;i--)
printf("%c",c[i]);
}
3.(*)已知abc+cba=1333,其中a、b、c均為一位數,例如:617+716=1333, 518+815=1333,
試編程求出符合這一規律的a、b、c,並輸出結果。
main()
{int a,b,c,x,y;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=1;c<=9;c++)
{ x=100*a+10*b+c;
y=100*c+10*b+a;
if(x+y==1333)
printf("x=%d,y=%d",x,y);}
}
4.(*)利用海倫公式求三角形面積,三邊長a,b,c由鍵盤輸入。若輸入的三邊長不能構成
三角形,輸出相應提示信息。海倫公式如下:其中s=(a+b+c)/2
三角形面積=
#include"math.h"
main()
{ float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
if(a+b>c&&a+c>b&&b+c>a)
printf("area=%f",area);
else
.1 .
printf("no");
}_
5.(*)編程求出1!+2!+3!+…+8!+9!+10!的值並輸出。
程序1: main()
{ int i,j;
double p=1, sum=0;
for(i=1;i<=10;i++)
{ for(j=1;j<=i;j++)
p=p*i;
sum=sum+p;p=1.0;}
printf("sum=%f",sum);
}_
程序2:float fac(n)
int n;
{flo

D. 求教c語言的編程題目

根據題意構建學生結構體。查詢分析。

1.手動錄取學生信息對應我的函數iputCStus,連續輸入一個班級的學生信息,構建一條鏈表,返回頭節點,想創建多個班級,反復調用即可。

2.統計平均分和最高最低分,對應我的函數showById。

3.統計功能對應函數tjRN。

另外,由於演示和測試需要一組學生信息,反復手動輸入不合理,所以我又單獨寫了一個隨機數自動生成數據的函數init,你不需要可以刪除。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

#include <string.h>

#include <malloc.h>

#define SN 3//學科門數

#define MINS 60//不及格閥值,低於該值不及格

typedef struct student

{

char id[10];

char name[10];

int scores[SN];

struct student *next;

}STU;

STU *iputCStus();//輸入一個班級的學生信息,創建鏈表,成功返回頭節點,失敗返回NULL

void freeSList(STU *stusHead);// 釋放鏈表

void showById(STU *stusHead);//按照學號輸出成績

void showBySc(STU *stusHead);//每門課程的平均分、最高分、最低分

void tjRN(STU *stusHead);//統計區間人數60以下,[60~79],[80~89],[90及以上],返回數組

int main()

{

//----測試用!!!代替手動輸入---------

STU *init();

STU *stusHead=init();

//-------------------------------------


//題目要的手動輸入--替換上面的測試函數--------------

//STU *stusHead=iputCStus();

//--------------------------------------------------

showById(stusHead);

showBySc(stusHead);

tjRN(stusHead);

return 0;

}

STU *init()//測試用函數,不需要可以刪除,用到頭文件stdlib和time也可以一並刪除

{

#define STN 9//測試生成的學生數量

int i,j,sc;

char snum[STN];

STU *stusTail=NULL;

static STU stusHead,stusNew[STN];

srand(time(NULL));

printf("---開始生成測試用數據鏈表(50~100隨機數作為成績)---- ");

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

{

strcpy(stusNew[i].id,"S00");

strcat(stusNew[i].id,itoa(i+1,snum,10));

strcpy(stusNew[i].name,"學生");

strcat(stusNew[i].name,snum);

for(j=0;j<SN;j++)

{

sc=rand()%51+50;//50~100的隨機數

stusNew[i].scores[j]=sc;

}

if(i==0)

stusHead.next=&stusNew[i];

else

stusTail->next=&stusNew[i];

stusTail=&stusNew[i];

}

return &stusHead;

}

void freeSList(STU *stusHead)

{

STU *stusLast=NULL;

if(stusHead)

while(stusHead->next)

{

if(stusLast)

free(stusLast);

stusLast=stusHead->next;

stusHead=stusHead->next;

}

if(stusLast)

free(stusLast);

if(stusHead)

free(stusHead);

}

void tjRN(STU *stusHead)//統計區間人數60以下,[60~79],[80~89],[90及以上],返回數組

{

STU *stusHSave=stusHead;

int scnt=0,i,tj[SN][4];

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

{

tj[i][0]=tj[i][1]=tj[i][2]=tj[i][3]=0;

printf(" 課程%d統計結果: ",i+1);

while(stusHead->next)

{

if(stusHead->next->scores[i]<60)

tj[i][0]++,printf("學號:%-5s 成績:%3d不及格 ",stusHead->next->id,stusHead->next->scores[i]);

if(stusHead->next->scores[i]>=60 && stusHead->next->scores[i]<=79) tj[i][1]++;

if(stusHead->next->scores[i]>=80 && stusHead->next->scores[i]<=89) tj[i][2]++;

if(stusHead->next->scores[i]>=90) tj[i][3]++;

if(i==0) scnt++;

stusHead=stusHead->next;

}

printf("不及格人數共計:%d ",tj[i][0]);

printf("60-80分的人數為:%d,佔比:%.0f%% ",tj[i][1],tj[i][1]*1.0/scnt*100);

printf("80-90分的人數為:%d,佔比:%.0f%% ",tj[i][2],tj[i][2]*1.0/scnt*100);

printf("90分以上的人數為:%d,佔比:%.0f%% ",tj[i][3],tj[i][3]*1.0/scnt*100);

stusHead=stusHSave;

}

}

void showBySc(STU *stusHead)

{

float avg[SN];

int i,sum[SN]={0},max[SN]={0},min[SN]={0},sCNT=0;

STU *stusHSave=stusHead;

printf(" ");

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

{

if(stusHead->next)

max[i]=min[i]=stusHead->next->scores[i];

while(stusHead->next)

{

if(stusHead->next->scores[i]>max[i])

max[i]=stusHead->next->scores[i];

else if(stusHead->next->scores[i]<min[i])

min[i]=stusHead->next->scores[i];

sum[i]+=stusHead->next->scores[i];

sCNT++;

stusHead=stusHead->next;

}

avg[i]=sum[i]*1.0/sCNT;

stusHead=stusHSave;

}

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

printf("課程%d的平均分為%.1f,最高分為%d,最低分為%d ",i+1,avg[i],max[i],min[i]);

printf(" ");

}

void showById(STU *stusHead)

{

int i;

printf(" ");

while(stusHead->next)

{

printf("學號:%-5s的成績分別為:",stusHead->next->id);

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

printf("%3d ",stusHead->next->scores[i]);

printf(" ");

stusHead=stusHead->next;

}

}

STU *iputCStus()

{

int i;

char c;

STU *stusHead=NULL,*stuNew=NULL,*stuTail=NULL;

stusHead=(STU *)malloc(sizeof(STU));

if(!stusHead) return NULL;

stusHead->next=NULL;

while(1)

{

stuNew=(STU *)malloc(sizeof(STU));

if(!stuNew)

{

freeSList(stusHead);

return NULL;

}

stuNew->next=NULL;

printf("請輸入學生學號:"),scanf("%s",stuNew->id);

printf("請輸入學生姓名:"),scanf("%s",stuNew->name);

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

printf("請輸入學科%d成績:",i+1),scanf("%d",&stuNew->scores[i]);

if(stusHead->next==NULL)

stusHead->next=stuNew;

else

stuTail->next=stuNew;

stuTail=stuNew;

getchar();

c=0;

while(c!='Y' && c!='N')

printf(" 是否繼續錄入?Y/N "),c=getchar();

printf(" ");

if(c=='N')

break;

}

return stusHead;

}