首页技术c语言程序设计题目?c语言程序设计题库及答案

c语言程序设计题目?c语言程序设计题库及答案

编程之家2026-06-14651次浏览

大家好,感谢邀请,今天来为大家分享一下c语言程序设计题目的问题,以及和c语言程序设计题库及答案的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

c语言程序设计题目?c语言程序设计题库及答案

C语言程序设计题目

1、对c的计算运用转换有误。

2、f是字符变量,而"男"需要用字符串表示,而不是用字符表示。

3、C语言中没有12%、20%、30%这种写法,要写成0.12、0.2、0.3

4、e=那一条语句,以及后面的4个printf语句,最后都漏了分号。

问题很多,超过一半的语句都有错。至于提示if有问题,只是多个问题其中的一个问题,指的是12%、20%、30%书写方式有问题。

c语言程序设计试题

c语言程序设计试题

c语言程序设计题目?c语言程序设计题库及答案

阐述编程语言的概念,学习进制转换以及程序的基本运行原理,让大家先有一个整体上的认识。下面是我整理的关于c语言程序设计基础知识,希望大家认真阅读!

【程序1】

题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去

掉不满足条件的排列。

2.程序源代码:

c语言程序设计题目?c语言程序设计题库及答案

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,k;

printf("

");

for(i=1;i<5;i++)/*以下为三重循环*/

for(j=1;j<5;j++)

for(k=1;k<5;k++)

{

if(i!=k&&i!=j&&j!=k)/*确保i、j、k三位互不相同*/

printf("%d,%d,%d

",i,j,k);

}

getch();

}

【程序2】

题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高

于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提

成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于

40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于

100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

long int i;

int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;

scanf("%ld",&i);

bonus1=100000*0. 1;

bonus2=bonus1+100000*0.75;

bonus4=bonus2+200000*0.5;

bonus6=bonus4+200000*0.3;

bonus10=bonus6+400000*0.15;

if(i<=100000)

bonus=i*0.1;

else if(i<=200000)

bonus=bonus1+(i-100000)*0.075;

else if(i<=400000)

bonus=bonus2+(i-200000)*0.05;

else if(i<=600000)

bonus=bonus4+(i-400000)*0.03;

else if(i<=1000000)

bonus=bonus6+(i-600000)*0.015;

else

bonus=bonus10+(i-1000000)*0.01;

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

getch();

}

【程序3】

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后

的结果满足如下条件,即是结果。请看具体分析:

2.程序源代码:

代码如下:

#include"math.h"

#include"stdio.h"

#include"conio.h"

main()

{

long int i,x,y,z;

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

{

x=sqrt(i+100);/*x为加上100后开方后的结果*/

y=sqrt(i+268);/*y为再加上168后开方后的结果*/

if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/

printf("

%ld

",i);

}

getch();

}

【程序4】

题目:输入某年某月某日,判断这一天是这一年的第几天?

1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的.第几天,特殊

情况,闰年且输入月份大于3时需考虑多加一天。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

int day,month,year,sum,leap;

printf("

please input year,month,day

");

scanf("%d,%d,%d",&year,&month,&day);

switch(month)/*先计算某月以前月份的总天数*/

{

case 1:sum=0;break;

case 2:sum=31;break;

case 3:sum=59;break;

case 4:sum=90;break;

case 5:sum=120;break;

case 6:sum=151;break;

case 7:sum=181;break;

case 8:sum=212;break;

case 9:sum=243;break;

case 10:sum=273;break;

case 11:sum=304;break;

case 12:sum=334;break;

default:printf("data error");break;

}

sum=sum+day;/*再加上某天的天数*/

if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/

leap=1;

else

leap=0;

if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/

sum++;

printf("It is the%dth day.",sum);

getch();

}

【程序5】

题目:输入三个整数x,y,z,请把这三个数由小到大输出。

1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,

然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

int x,y,z,t;

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

if(x>y)

{t=x;x=y;y=t;}/*交换x,y的值*/

if(x>z)

{t=z;z=x;x=t;}/*交换x,z的值*/

if(y>z)

{t=y;y=z;z=t;}/*交换z,y的值*/

printf("small to big:%d%d%d

",x,y,z);

getch();

}

【程序6】

题目:用*号输出字母C的图案。

1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

printf("Hello C-world!

");

printf("****

");

printf("*

");

printf("*

");

printf("****

");

getch();

}

【程序7】

题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!

1.程序分析:字符共有256个。不同字符,图形不一样。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

char a=176,b=219;

printf("%c%c%c%c%c

",b,a,a,a,b);

printf("%c%c%c%c%c

",a,b,a,b,a);

printf("%c%c%c%c%c

",a,a,b,a,a);

printf("%c%c%c%c%c

",a,b,a,b,a);

printf("%c%c%c%c%c

",b,a,a,a,b);

getch();

}

【程序8】

题目:输出9*9口诀。

1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j,result;

printf("

");

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

{

for(j=1;j<10;j++)

{

result=i*j;

printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/

}

printf("

");/*每一行后换行*/

}

getch();

}

【程序9】

题目:要求输出国际象棋棋盘。

1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。

2.程序源代码:

代码如下:

#include"stdio.h"

#include"conio.h"

main()

{

int i,j;

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

{

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

if((i+j)%2==0)

printf("%c%c",219,219);

else

printf("");

printf("

");

}

getch();

}

;

请C语言高手帮忙做一下c程序设计题目

没工夫编了,给你找了个现成的,百度知道里的。

#include<iostream>

#include<string>

#include"address.h"

#include"addressList.h"

#include"addressBook.h"

using namespace std;

int main()

{

new AddressBook;//开启通信录

return 0;

}

ostream& operator<<(ostream& os, const RecordList& c_rl)

{

RecordList::const_iterator it;

RecordList::const_iterator it_end=c_rl.end();

for(it=c_rl.begin();it!=it_end; it++)

{

os<<(*it)->name<<'\n'<<(*it)->tel<<'\n';

}

return os;

}

istream& operator>>(istream& is, RecordList& rl)

{

Record* rec;

string name;

while(true)

{

//注意这里使用的是全局的getline()函数,而不是istream的成员函

//数.全局的getling()函数将从istream中取出最后一个分隔符,

//而istream的成员函数getline则不会

getline(is,name);

if(name=="")

break;

rec= new Record;

rec->name=name;

getline(is,rec->tel);

rl.push_back(rec);

}

return is;

}

#include<stdlib.h>

#include<fstream>

#include"addressBook.h"

using namespace std;

AddressBook::AddressBook()

{

isModified= false;

start();

}

AddressBook::~AddressBook()

{

}

//功能:显示欢迎画面,并开始进行用户交互处理

void AddressBook::start()

{

cout<<"\n"

<<"\t******************************\n"

<<"\t*这是一个*\n"

<<"\t*简单的通信录程序*\n"

<<"\t*可以对通信录进行简单管理*\n"

<<"\t*欢迎使用通信录*\n"

<<"\t******************************\n"

<<"\n";

handleMenu();

}

//功能:显示通信录菜单,返回用户选择的选项

//返回:用户选择的选项,是1-9之间的一个字符

char AddressBook::menuSelect()

{

cout<<"\n"

<<"1.显示记录\n"

<<"2.查询记录\n"

<<"3.增加记录\n"

<<"4.删除记录\n"

<<"5.保存记录\n"

<<"6.读取记录\n"

<<"7.新建记录\n"

<<"8.结束运行\n"

<<"\n左边数字对应功能选择,请选1-8:";

char choice[2];

while(true)

{

cin.getline(choice,2);

if(choice[0]<'1'|| choice[0]>'8')

cout<<"\n输入错误,重选1-8:";

else

break;

}

return choice[0];

}

//功能:根据用户选择的项目调用相应的处理函数

void AddressBook::handleMenu()

{

while(true)

{

switch(menuSelect())

{

case'1':

displayRecords();

break;

case'2':

queryRecord();

break;

.......

//功能:打印用于显示记录信息时的表头

void AddressBook::dispTable()

{

}

//功能:显示通信录中的所有记录

void AddressBook::displayRecords()

{

}

//功能:首先检查通信录是否已保存,然后清空当前通信录中所有记录

//注意:该函数覆盖了基类中的函数

void AddressBook::clear()

{

}

//功能:查询指定记录

void AddressBook::queryRecord()

{

//功能:向当前通信录追加新的记录

//注意:该函数重载了基类中的函数

void AddressBook::addRecord()

{

}

/*

//说明:如果使用string类,效果更好。下面是实现本功能的程序代码:

while(true)

{

//输入新记录

string name;

cout<<"姓名:";

getline(cin,name);

//如果输入的姓名为“0”,则结束添加记录的操作

if(name=="0")

break;

Record* rec=new Record;

rec->name=name;

cout<<"电话:";

getline(cin,rec->tel);

//将新记录加入链表

AddressList::addRecord(rec);

}

//同理,下面的成员函数removeRecord()中的判断,可以使用如下替代方法:

string str;

getline(cin,str);

while(true)

{

if(str[0]!='1'&& str[0]!='2')

{

cout<<"输入错误,重选1-2:";

getline(cin,str);

}

else

break;

}

*/

//功能:从当前通信录移除指定的记录

//注意:该函数重载了基类中的函数

void AddressBook::removeRecord()

{

if(empty())

{

cout<<"通信录已空,退出删除操作!"<<endl;

return;

}

//选择获取需要删除的记录的方式

cout<<"可以通过姓名或电话删除记录\n"

<<"1.通过姓名\n"

<<"2.通过电话\n";

char choice[2];

cin.getline(choice,2);

while(true)

{

if(choice[0]!='1'&& choice[0]!='2')

{

cout<<"输入错误,重选1-2:";

cin.getline(choice,2);

}

else

break;

}

int type=static_cast<int>(choice[0])-48;

//输入需要匹配的字符串

if(type==1)

cout<<"请输入姓名:"<<flush;

else

cout<<"请输入电话:"<<flush;

char pattern[20];

cin.getline(pattern,20);

int deletedCount=0;

//找到匹配的记录

Iterator it=findRecord(pattern,type,first());

Iterator it_end=pastEnd();

while(it!=it_end)

{

cout<<"找到一条匹配的记录:\n";

dispTable();

cout<<(*it)->name<<"\t\t"<<(*it)->tel<<"\n";

cout<<"确定要删除这条记录吗?[Y/N]";

cin.getline(choice,2);

//删除这条记录

if(choice[0]!='n'&& choice[0]!='N')

{

it=AddressList::removeRecord(it);

deletedCount++;

}

//取下一条匹配的记录

if(it!=it_end)

it=findRecord(pattern,type,++it);

}

cout<<"一共删除了"<<deletedCount<<"条记录\n"

<<"现在还有"<<size()<<"条记录"<<endl;

if(deletedCount!=0)

isModified=false;

}

//功能:将通信录保存至指定文件

//注意:该函数重载了基类中的函数

void AddressBook::saveRecords()

{

if(empty())

{

cout<<"没有记录可存!"<<endl;

return;

}

//因为下面的程序中使用string类的成员函数,所以需要进行一次转换

string fname;

char name[16];

cout<<"请输入要存在的文件名(直接回车选择文件sname):";

cin.getline(name,16);

fname=name;

if(fname.empty())

fname="sname";

ofstream of(fname.c_str(),ios_base::out);

if(!of)

{

cout<<"不能存入文件!"<<endl;

return;

}

AddressList::saveRecords(of);

of.close();

cout<<size()<<"条记录已经存入文件,请继续操作。"<<endl;

isModified=false;

}

//功能:从指定文件读取记录追加到当前通信录末尾

//注意:该函数重载了基类中的函数

void AddressBook::loadRecords()

{

}

void AddressBook::quit()

{

}

#ifndef H_ADDRESSBOOK_H_NNN

#define H_ADDRESSBOOK_H_NNN

#include"addressList.h"

//处理通信录操作的面向用户使用的类,包含所有功能的用户界面及用户交互的实现

class AddressBook:public AddressList

{

protected:

bool isModified;//通信录是否已被修改还未保存

public:

AddressBook();

virtual~AddressBook();

//开始通信录的用户界面操作

virtual void start();

//菜单处理函数

virtual void handleMenu();

//显示记录

virtual void displayRecords();

//查询记录

virtual void queryRecord();

//增加记录

virtual void addRecord();

//删除记录

virtual void removeRecord();

//保存记录

virtual void saveRecords();

//读取记录

virtual void loadRecords();

//结束程序

virtual void quit();

//清空当前通信录

virtual void clear();

protected:

//菜单选择函数

char menuSelect();

//显示表头

void dispTable();

};

#endif//H_ADDRESSBOOK_HZ-NNN

#include"addressList.h"

AddressList::~AddressList()

{

recList.clear();

}

//功能:向通信录中添加新的记录

//参数:rec,指向新记录的指针

void AddressList::addRecord(Record* rec)

{

if(rec!=NULL)

{

recList.push_back(rec);

}

}

//功能:从通讯录中删除一个记录

//参数:it,指向欲删除记录的迭代器

//注意:it,应是可提领的迭代器,可以通过findRecord()获得

AddressList::Iterator AddressList::removeRecord(AddressList::Iterator it)

{

return recList.erase(it);

}

//功能:从通信录中寻找一个记录

//参数:pattern,欲寻找的记录的指定域与pattern相等

// type,为1表示欲寻找记录的名称(name)与pattern相等;

//为2表示欲寻找记录的电弧(tel)与(pattern)相等。

// from,从from开始寻找匹配的记录。

//返回:若找到了则返回的迭代器指向第一个匹配记录的迭代器,

//若找不到则返回的迭代器等于pastEnd()的返回值。

//注意:from应是可提领的迭代器。

//第一次调用可以用first(),之后使用上一次findRecord()的返回值增1,

//直到返回pastEnd(),便可以获得所有匹配的记录。

AddressList::Iterator AddressList::findRecord(string pattern,int type,AddressList::Iterator from)

{

Iterator it;

Iterator it_end=recList.end();

for(it=from; it!=it_end; it++)

{

if((type==1&&(*it)->name==pattern)||(type==2&&(*it)->tel==pattern))

break;

}

return it;

}

//功能:将通信录保存到输出流中

//参数:os.指定的输出流

void AddressList::saveRecords(ostream&os)

{

os<< recList;

}

//功能:从输入流中读入数据并追加到当前通信录的末尾

//参数:is,指定的输入流

//返回:读入的记录数

int AddressList::loadRecords(istream&is)

{

int ori=size();

is>> recList;

return size()-ori;

}

#ifndef H_ADDRESSLIST_H_AAA

#define H_ADDRESSLIST_H_AAA

#include<iostream>

#include<string>

#include"address.h"

using namespace std;

//处理通信录操作的底层类,包括增加记录、删

//除记录、查询记录以及保存和读取记录的函数,

//该类不涉及任何关于用户界面的操作

class AddressList

{

protected:

RecordList recList;//使用对象成员作为数据成员

public:

typedef RecordList::iterator Iterator;

//向通信录中添加新的记录

virtual void addRecord(Record* rec);

//从通信录中删除一个记录

virtual Iterator removeRecord(Iterator it);

//从通讯录中寻找一个记录

virtual Iterator findRecord(string pattern,int type,Iterator from);

//将通信录保存到输出流中

virtual void saveRecords(ostream& os);

//从输入流中读入数据并追加到当前通信录的末尾

virtual int loadRecords(istream& is);

virtual~AddressList();

//获得通信录中存储的记录数

const int size() const{return(int)recList.size();}

//通信录是否为空

const bool empty() const{return recList.empty();}

//清除通信录

virtual void clear(){recList.clear();}

//获得通信录的第一条记录

Iterator first(){return recList.begin();}

//获得通信录超过最后一个记录之后的迭代器

Iterator pastEnd(){return recList.end();}

};

#endif//H_ADDRESSLIST_H_AAA

c语言程序设计题目的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言程序设计题库及答案、c语言程序设计题目的信息别忘了在本站进行查找哦。

input属性最大输入?input必填属性php格式化代码?idea格式化代码设置