当前位置:首页 » 编程语言 » 常见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);
}