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

常見c語言編程題

發布時間: 2022-01-27 09:11:42

c語言編程題

給你個思路。
用putchar獲得輸入的字元串,然後判斷單個字元是否是aeiou,同時判斷這是第幾個字元(while((w=getchar())!=EOF,中間設置一個變數累加就可以判斷是第幾個字元)
碰到了aeiou就輸出那個變數。

⑵ 各種求!!!!c語言編程題!!!1

題目已經說的很清楚了,用一個長度為26的int數組存放各個字母的使用頻率,然後不能用if或者switch,只能用ASCII碼來計算,那就搞清楚他們之間的對應關系就行,比如a是97,A是65,假如a後者A的頻率存在數組的0號位置,遍歷輸入串的時候碰到a或者A(也就是ASCII碼值為97或者65)時,0號位置的數就加1,其他類似!當然他還需要你把大寫字母轉換為小寫,這個也只是把大寫字母的ASCII碼值減去32而已,就這么簡單!
至於排序,由於是用數組存儲,數組本身已經可以隨機存儲,所以排序已經變得比較方便了,至於題目要求你用指針數組,那你就按要求做,都差不多,排序建議你用快速排序演算法!
至於輸入串,因為只需要遍歷一遍就可以,所以可以採用數組,也可以用鏈表來存儲,你要用其他結構也行!

⑶ C語言編程題.答案越簡單越好

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1
struct student
{
char name[60];
char ID[7];
int score;
};int dq(struct student st[]);
void xianshi();
void bc(struct student st[]);
void add();
void select();
void zz();
void chazhao();
void xhcz();
void xmcz();
void del();
void xmsc();
void xhsc();
void tj();
void bjg();
void xg();
void xhxg();
void xmxg();
void bca();
void fh();
struct student st[300];
int Number=0;
void main()
{
int choose=0;
FILE *fp=NULL;
char yesorno; if((fp=fopen("C://student.dat","rb"))==NULL)
{
printf("\n=========>提示:文件不存在,是否要創建一個?(y/n)\n");
scanf("%c",&yesorno);
if(yesorno=='y'||yesorno=='Y')
{
fp=fopen("C://student.dat","wb");
fclose(fp);
}
else
exit(0);
}
else
{
Number=dq(st);
}
system("cls");
while(true)
{
xianshi();
printf("\t\t====>請選擇:");
scanf("%d",&choose);
system("cls");
switch(choose)
{
case 0: exit(0);fh();break;
case 1: add();fh();break;
case 2: select();fh();break;
case 3: chazhao();fh();break;
case 4: del();fh();break;
case 5: tj();fh();break;
case 6: bjg();fh();break;
case 7: xg();fh();break;
case 8:zz();fh();break;
case 9:bca();break;
default:break;
}
fflush(stdin);
getchar();
system("cls");
}
} void bca()
{
printf("\t=====程序在運行時已自動保存.....\n");
}void fh()
{
printf("\t===>按Enter鍵返回主菜單\n");
}void xg()
{
int way=0;
printf("請選擇修改查找方式\n");
printf("1 按姓名查找修改\n");
printf("2 按學號查找修改\n");
scanf("%d",&way);
switch(way)
{
case 1: xmxg();break;
case 2: xhxg();break;
default: printf("輸入有誤,結束!\n");break;
}
}
void xmxg()
{
FILE *fp=NULL;
char name[60];
int i=0;
int changeIndex=0;
int index=0;
printf("請輸入要修改的學生姓名:");
scanf("%s",name);
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name))
{
changeIndex=i;
}
break;
}
printf("\t姓名\t學號\t成績\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("請重新輸入該學生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("學號:");
scanf("%s",st[changeIndex].ID);
printf("成績:");
scanf("%d",&st[changeIndex].score);
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
void xhxg()
{
FILE *fp=NULL;
char id[60];
int i=0;
int changeIndex=0;
int index=0;
printf("請輸入要修改的學生學號:");
scanf("%s",id);
for (i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID))
{
changeIndex=i;
}
break;
}
printf("\t姓名\t學號\t成績\n");
printf("\t%s\t%s\t%d\n\n",st[changeIndex].name,st[changeIndex].ID,st[changeIndex].score);
printf("請重新輸入該學生信息");
printf("姓名:");
scanf("%s",st[changeIndex].name);
printf("學號:");
scanf("%s",st[changeIndex].ID);
printf("成績:");
scanf("%d",&st[changeIndex].score);
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("\t=======>修改成功\n");
}void bjg()
{
int i=0;
printf("以下是不及格:\n");
printf("\t姓名\t學號\t成績\n");
for (i=0;i<Number;i++)
{
if (st[i].score<60)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void tj()
{
int i=0;
double sum=0.0;
for(i=0;i<Number;i++)
{
sum+=st[i].score;
}
printf("全班總分為:%f\n",sum);
printf("平均分為:%f\n",sum/Number);
}
void del()
{
int n=0;
printf("1 按姓名刪除\n");
printf("2 按學號刪除\n");
scanf("%d",&n);
switch(n)
{
case 1: xmsc();break;
case 2: xhsc();break;
}
}
void xmsc()
{
FILE *fp=NULL;
char name[60];
int i=0;
int j=0;
printf("請輸入要刪除的學生姓名:");
scanf("%s",name);
for(i=0;i<Number;i++)
{
if(strcmp(name,st[i].name)==0)
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("刪除成功;\n");
}void xhsc()
{
FILE *fp=NULL;
char id[60];
int i=0;
int j=0;
printf("請輸入要刪除的學生學號:");
scanf("%s",id);
for(i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0)
{
for (j=i;j<Number-1;j++)
{
st[j]=st[j+1];
}
Number--;
}
}
fp=fopen("C://student.dat","wb");
for (i=0;i<Number;i++)
{
fwrite(&st[i],sizeof(struct student),1,fp);
}
fclose(fp);
printf("刪除成功;\n");
}void chazhao()
{
int n=0;
printf("1 按姓名查找\n");
printf("2 按學號查找\n");
scanf("%d",&n);
switch(n)
{
case 1: xmcz();break;
case 2: xhcz();break;
default: printf("輸入有誤,結束!\n");
break;
}
}void xhcz()
{
char id[7];
int i=0;
printf("請輸入要查找學生學號:");
scanf("%s",id);
system("cls");
printf("\t姓名\t學號\t成績\n");
for(i=0;i<Number;i++)
{
if (strcmp(id,st[i].ID)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void xmcz()
{
char name[7];
int i=0;
printf("請輸入要查找學生姓名:");
scanf("%s",name);
system("cls");
printf("\t姓名\t學號\t成績\n");
for (i=0;i<Number;i++)
{
if (strcmp(name,st[i].name)==0)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
}
void zz()
{
printf("\t**********************************************************\n\n");
printf("\t^^^^^^^^^ 《學生成績管理系統》 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 四川省托普信息技術職業學院 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 09級計算機網路技術IBM2班 ^^^^^^^^^^\n\n");
printf("\t^^^^^^^^^ 周桂修改 ^^^^^^^^^^\n\n");
printf("\t**********************************************************\n\n");
}
void select()
{
int i=0;
printf("以下是全部學生成績\n");
printf("\t姓名\t學號\t成績\n");
for(i=0;i<Number;i++)
{
printf("\t%s\t%s\t%d\n",st[i].name,st[i].ID,st[i].score);
}
}
void add()
{
int numberTemp=0;
int i=0;
struct student temp;
printf("請輸入要增加學生成績個數:");
scanf("%d",&numberTemp);
for(i=0;i<numberTemp;i++)
{
printf("輸入第%d個同學信息\n",i+1);
printf("姓名:");
scanf("%s",temp.name);
printf("學號:");
scanf("%s",temp.ID);
printf("成績:");
scanf("%d",&temp.score);
st[Number++]=temp;
bc(&temp);
}
printf("添加成功\n");
}
void bc(struct student *st)
{
FILE *fp=NULL;
fp=fopen("C://student.dat","ab+");
fwrite(st,sizeof(struct student),1,fp);
fclose(fp);
}
int dq(struct student st[])
{
FILE *fp=NULL;
int i=0;
fp=fopen("C://student.dat","rb");
while(fread(&st[i],sizeof(struct student),1,fp))
i++;
fclose(fp);
return i;
}
void xianshi()
{
printf("\t*****************************************************************\n");
printf("\t* *\n");
printf("\t* 學生成績管理系統 *\n");
printf("\t* *\n");
printf("\t* [1] 增加學生成績 [2] 查看學生成績 *\n");
printf("\t* [3] 查找學生成績 [4] 刪除學生成績 *\n");
printf("\t* [5] 統計(總成績和平均分)[6] 輸出不及格人數 *\n");
printf("\t* [7] 修改學生信息 [8] 關於作者 *\n");
printf("\t* [9] 保存數據 [0] 退出系統 *\n");
printf("\t*****************************************************************\n");
}

⑷ C語言編程題

參考原始問題

第一問解答:

voidwrite_line(void)
{
intextra_spaces,spaces_to_insert,i,j;

extra_spaces=MAX_LINE_LEN-line_len;
for(i=0;i<line_len;i++){
if(line[i]!='')
putchar(line[i]);
else{
spaces_to_insert=extra_spaces/(num_words-1);
for(j=1;j<=spaces_to_insert+1;j++)
putchar('');
extra_spaces-=spaces_to_insert;
num_words--;
}
}
putchar(' ');
}


//修改為
voidwrite_line(void)
{
staticboolright=true;
intextra_spaces,spaces_to_insert,i,j;

extra_spaces=MAX_LINE_LEN-line_len;
for(i=0;i<line_len;i++){
if(line[i]!='')
putchar(line[i]);
else{
if(right)
spaces_to_insert=extra_spaces/(num_words-1);
else
spaces_to_insert=(extra_spaces+num_words-2)/(num_words-1);
for(j=1;j<=spaces_to_insert+1;j++)
putchar('');
extra_spaces-=spaces_to_insert;
num_words--;
}
}
putchar(' ');
right=!right;
}

第二問解答

voidread_word(char*word,intlen)
{
intch,pos=0;

while((ch=read_char())=='')
;
while(ch!=''&&ch!=EOF){
if(pos<len)
word[pos++]=ch;
ch=read_char();
}
word[pos]='';
}

修改為

voidread_word(char*word,intlen)
{
intch,pos=0;

while((ch=read_char())=='')
;
while(ch!=''&&ch!=EOF){
if(pos<len){
word[pos++]=ch;
ch=read_char();
}
else{
word[0]='*';
pos=1;
while(ch!=''&&ch!=EOF){
ch=read_char();
}
break;
}
}
word[pos]='';
}

⑸ c語言常見編程題20

//這是貪食蛇小游戲程序:課程設計可以用到1315762326多交流啊
#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;
int a[100][100]={0};
int yes,sum;
class Snake//定義對象為蛇
{
public:
Snake()
{
x[0]=0;y[0]=4;
node=3;
}
int start();
int round();
int x[200];
int y[200];
int node;
int sorce;
};
class food//定義食物對象
{
public:
int born()
{
if(sum==0)//如果sum==0就產生隨機食物范圍為20*20
{
x=rand()%20;
y=rand()%20;
}
a[x][y]=1;//改變數字可以改變食物的圖案
sum=1;//讓食物不出現
return 0;
}
int x;
int y;
};
Snake sanke;
food fod;
char way='d';
int again()
{
for(int i=0;i<30;i++)//蛇吃食物的范圍
for(int j=0;j<30;j++)
if(i!=fod.x||j!=fod.y)
a[i][j]=0;
return 0;
}
int Snake::round()
{
for(int i=sanke.node-1;i>0;i--)
{
sanke.x[i]=sanke.x[i-1];
sanke.y[i]=sanke.y[i-1];
}
if (sanke.x[i]==fod.x&&sanke.y[i]==fod.y)
{
sanke.node+=1;
sum=0;
sanke.sorce+=10;
}
system("cls");//提高界面穩定性
switch(way)//方向選擇
{
case 'D':
case 'd':
{
if(sanke.y[0]==21||a[sanke.x[0]][sanke.y[0]+1]==42)//控制蛇走的范圍
{
cout<<"Game Over !!!"<<endl;
cout<<"your score is :"<<sanke.sorce<<" 分"<<endl;
exit(0);
}
sanke.y[0]=sanke.y[0]+1;
again();
if(yes==1)
fod.born();
for(int t=0;t<=node-1;t++)
a[sanke.x[t]][sanke.y[t]]=42;
};break;
case'S':
case's':
{
if(sanke.x[0]==21||a[sanke.x[0]+1][sanke.y[0]]==42)
{
cout<<"Game Over!!!"<<endl;
cout<<"your score is :"<<sanke.sorce<<" 分"<<endl;
exit(0);
}
sanke.x[0]+=1;
again();
if(yes==1)
fod.born();
for(int t=0;t<=node-1;t++)
a[sanke.x[t]][sanke.y[t]]=42;
};break;
case'A':
case'a':
{
if(sanke.y[0]==0||a[sanke.x[0]][sanke.y[0]-1]==42)
{
cout<<"Game Over !!!"<<endl;
cout<<"your score is :"<<sanke.sorce<<" 分"<<endl;
exit(0);
}
sanke.y[0]-=1;
again();
if(yes==1)
fod.born();
for(int t=0;t<=node-1;t++)
a[sanke.x[t]][sanke.y[t]]=42;
};break;
case'W':
case'w':
{

if(sanke.x[0]==0||a[sanke.x[0]-1][sanke.y[0]]==42)
{
cout<<"Game Over !!!"<<endl;
cout<<"your score is :"<<sanke.sorce<<" 分"<<endl;
exit(0);
}
sanke.x[0]-=1;
again();
if(yes==1)
fod.born();
for(int t=0;t<=node-1;t++)
a[sanke.x[t]][sanke.y[t]]=42;
};break;
}
return 0;
}
int Snake::start()
{
if(yes=1)
sanke.round();
for(int b=0;;)
{
if(1)
{
cout<<"@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ";//輸出上邊框
for( int i=0;i<22;i++)//右邊邊框的長度為11
{
cout<<"@";//輸出右邊邊框的界限
cout<<endl;//換行
for(int j=0;j<22;j++)//控制右邊邊框的位置在最右端
printf("%3c",a[i][j]);//控制右邊界圖案之間的距離
}
cout<<endl;//結束右邊界最下面一行
for(int t=0;t<29;t++)//for循環來輸出下行邊界的長度為32
cout<<" @";
cout<<"你的得分是:"<<sanke.sorce<<"分"<<endl;break;
}
}
return 0;
};
int main()
{
system("color 9A");//控制背景顏色和邊框顏色
int x,m,b,j,t;
cout<<"welcome to play greedy snake!!!"<<" please choose the different degree!!!"<<endl;
cout<<"1 : difficult 2 : normal 3 : easy "<<endl;
a[5][0]=42;a[5][1]=42;a[5][2]=42;//蛇最初出現的位置[5,0][5,1][5,2]和圖案為星號
cout<<" @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ ";//輸出上邊框
for(int i=0;i<10;i++)//右邊邊框的長度為10
{
cout<<"@";//輸出右邊邊框的界限
cout<<endl;//換行
for(j=0;j<15;j++)//控制右邊邊框的位置在最右端
printf("%3c",a[i][j]);//控制右邊界圖案之間的距離
}
cout<<endl;//結束右邊界最下面一行
for(t=0;t<23;t++)//for循環來輸出下行邊界的長度為23
cout<<" @";
cout<<"你的得分是:"<<sanke.sorce<<" 分"<<endl;
cout<<"Please choose your need:"<<endl;
scanf("%d",&x);
cout<<"use(w)(s)(a)(d)to control (up)(down)(left)(right) "<<"press the space key to start!!"<<endl;
if(x==1)m=1;
else if(x==2)m=100;
else if(x==3) m=500;
else printf("your choice is error!!!!");
while((b=getch())!=' ');
while(1)
{
while(!kbhit())
{
sanke.start();
if(kbhit());
else
Sleep(m);
}
way=getch();
}
return 0;
}

⑹ 一個C語言編程題

老兄,我已經幫你完全改好了
你看看吧
換種思路很快就解決了
呵呵
void
main()
{
int
i=2,n;
scanf("%d",&n);
while(i<=n)
{
if(n%i==0)
{
if(n==i)
{
printf("%d",i);
break;
}
else
printf("%d*",i);
n=n/i;
i=1;
}
i++;
}
}

⑺ c語言編程題目及答案

#include <stdio.h>
#include <math.h>
void main(void)
{
double a;

double b;

double c;/* 以上三個變數分別對應三邊 */

double sin_c;/* c邊對應角的正玄值 */

double cos_c;/*c邊對應角的余玄值*/

double cos_a;

double area; /* 三角形的面積 */

printf("輸入a,b,c:");

scanf("%lf, %lf, %lf", &a, &b, &c);

if(((a+b)>c) && (a-b)<c)
{
printf("三邊能夠成三角形\n.");

cos_c = (a*a + b*b -c*c)/(2*a*b);

cos_a = (b*b + c*c - a*a)/(2*b*c);

if ((cos_c > 0) && (cos_a >0))
{
printf("三角形是銳角三角形。\n");
}

else if ((cos_c < 0) || (cos_a < 0))
{
printf("三角形是鈍角三角形\n");
}
else
{
printf("三角形是直角三角形\n");
}

sin_c = sqrt(1- cos_c*cos_c);

area = a*b*sin_c/2;

printf("三角形的面積是%f.\n",area);
}
else
{
printf("三邊不能構成三角形\n");
}
}

⑻ C語言編程題,簡單

頭文件我貼在這兒,
實現文件我貼到貼吧裡面,大家可以去看
路徑為:
網路貼吧 > 軟體與編程 > c語言吧 > 某課程設計---<<文件相似判斷>>
---------------------------------------------------
//頭文件
#ifndef _TWOFILE_H_
#define _TWOFILE_H_

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

//宏定義用於控制用戶最大的輸入長度(輸入的字元個數)
#define MAX_INPUT_NUM 10240
#define MAX_WORD_LENGTH 100

//單詞鏈表結點(定義單詞最大的長度為100個字元)
typedef struct wordnode{
char node[MAX_WORD_LENGTH];
struct wordnode * pNext;
}WORDNODE;
typedef WORDNODE* PWORDNODE;

//功能:顯示主界面並取得用戶的輸入
//輸入:無
//輸出:無
//返回值:用戶輸入的選擇
int ShowMain(void);

//功能:從界面上取得用戶輸入的字元串(最大輸入長度不超過10240個字元)
//輸入:char * GetData---接收數據的緩沖區
// :int MaxSize---緩沖區大小
//輸出:無
//返回:取得的用戶輸入的字元串首地址(即輸入參數的GetData的地址)
char * GetUserInput(char * GetData,int MaxSize=10240);

//功能:錄入文件(文件保存位置為當前程序運行的位置)
//輸入:無
//輸出:無
//返回:布爾型,---真表示操作成功,假表示操作失敗
bool RecordFile(void);

//功能:比較文件(文件位置為當前程序運行的位置)
//輸入:無
//輸出:無
//返回:無
void CompareFile(void);

//功能:將數據存儲到文件內
//輸入:const char * FileName----想寫入數據的文件名
// :const char * Data----想寫入的數據
//輸出:無
//返回值:布爾型---真表示操作成功,假表示操作失敗
bool WriteDataToFile(const char * FileName,const char * Data);

//功能:將數據由文件讀出
//輸入:const char * FileName----想讀取數據的文件名
// :char * Data----想接收數據的地址
// :int DataSize----緩沖區長度
//輸出:無
//返回值:布爾型---真表示操作成功,假表示操作失敗
bool ReadDataFromFile(const char * FileName,char * Data,int DataSize=10240);

//功能:判斷一個字元串中單詞的個數,同時將該字元串轉換為單詞鏈表
//輸入:const char * aString---字元串首地址指針
// :PWORDNODE * firstnode---得到的字元鏈表的第一個結點
//輸出:無
//返回:該字元串中單詞個數
int HowManyWord(const char * aString,PWORDNODE * firstnode);

//功能:搜索兩個字元串中相同單詞的個數
//輸入:const char * str1---str2---想比較的兩個字元串
//輸出:無
//返回:兩個字元串中相同單詞的個數.
int TheSameWordNum(const char * str1,const char * str2);

#endif /*_TWOFILE_H_*/

⑼ c語言編程題

可以這樣理解,int *p[]是一個二級指針,int a[][]中a也是一個二級指針,a和p是同一級別的。
在這個程序中
p[0]指向了a[0];
p[1]指向了a[2];
p[2]指向了a[6];
p[3]指向了a[12];
p[0][0]等於a[0]=0;因為p[0]是指向a[0]的一級指針,向後偏移0個int,所以p[0][0]=a[0];
p[1][1]等於a[2+1]=3;因為p[1]是指向a[2]的一級指針,向後偏移1個int,所以p[1][1]=a[3];
p[2][2]等於a[6+2]=8;因為p[2]是指向a[6]的一級指針,向後偏移2個int,所以p[2][2]=a[8];
p[3][3]等於a[12+3]=15;因為p[3]是指向a[12]的一級指針,向後偏移3個int,所以p[3][3]=a[15];
所以最後結果等於26;
但是這樣用有一個弊端,如果用p[4][4的話,就會超過a[19]的作用域,可能修改了別的數據,帶來不必要的麻煩。

⑽ 一個c語言編程題...

原因在於浮點數比較有問題
比如float i=0;要判斷i是否為0,是不能直接寫i==0的。
這個知識點,你可以到網上搜索一下。

我把你的程序修改成如下,就能找到一個最接近19.555555的i和j的值了

#include<stdio.h>

void main()
{
double i, j, n, m,tmin,min=1.0,x=40.0,y=1.50;

for(i=40.0;i<=60.0;i=i+0.1)
for(j=1.500;j<=1.700;j=j+0.001)
{
n=i/(j*j);
m=(int)(n*100000)/100000.0;
tmin=(m-19.555555);
if(tmin<0) tmin=-tmin;
if(tmin<min)
{
min=tmin;
x=i;y=j;
}
}
printf("%lf,%lf\n",i,j);
}