注:编译环境 VC2010,系统WIN7 64位,其他编译环境和系统未测试

 

1-1. 编程,输入n,输出如下例(n=5)所示的图形:

*****

*****

*****

*****

*****

# include <stdio.h>

int main()

{

int length;

void print_parallelogram(int length);

scanf("%d", &length);

print_parallelogram(length);

return 0;

}

/**

* 打印平行四边形

* @param int length 边长

*/

void print_parallelogram(int length)

{

char element    = '*';//元素

char space      =' ';//空格

int i,j,k;

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

{

/** 打印空格 */

for(j=length-(i+1); j>0; j--)

{

printf("%c", space);

}

/** 打印元素 */

for(k=0; k<length; k++)

{

printf("%c",element);

}

printf("\n");

}

}

1-2. 编程,输入n值,输出如下例(n=4)所示的高和上底均为n的等腰梯形:

****

******

********

**********

# include <stdio.h>

int main()

{

int length;

void print_isosceles_trapezoid(int length_of_side);

scanf("%d", &length);

print_isosceles_trapezoid(length);

return 0;

}

/**

* 打印等腰梯形

* @param int length_of_side 边长

* @turn  void

*/

void print_isosceles_trapezoid(int length_of_side)

{

char element    = '*';//元素

char space      =' ';//空格

int i,j,k;

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

{

/** 打印空格 */

for(j=length_of_side-(i+1); j>0; j--)

{

printf("%c", space);

}

/** 打印元素 */

for(k=0; k<length_of_side+(i*2); k++)

{

printf("%c",element);

}

printf("\n");

}

}

1-3. 编程,输入n,输出如下例(n=3)所示的边长为n的菱形:

*

***

*****

***

*

# include <stdio.h>

int main()

{

int length;

void print_rhombus(int length_of_side);

scanf("%d", &length);

print_rhombus(length);

return 0;

}

/**

* 打印菱形

* @param int length_of_side 边长

* @turn  void

*/

void print_rhombus(int length_of_side)

{

char element    = '*';//元素

char space      =' ';//空格

int times       = length_of_side*2-1;//循环次数

int i,j,k,n,m;

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

{

/** 计算 空格的数量  */

n = length_of_side-(i+1);

n = n < 0 ? -n : n;

/** 打印空格 */

for(j=n; j>0; j--){

printf("%c", space);

}

/** 计算 棱形上边点 和下边点的数量  */

m = i<length_of_side ? 1+(i*2) : (times-i) * 2 -1 ;

/** 打印元素 */

for(k=m; k>0; k--){

printf("%c",element);

}

printf("\n");

}

}

1-4. 编程, 输入顶行字符和图形的高。输出如下例(顶行字符为'A',图形的高为5)所示的图形,

A

B C D

E F G H I

J K L M N O P

Q R S T U V W X Y

# include <stdio.h>

int main()

{

char letter; int height;

void letter_pyramid(char letter, int height);

printf("请输入金字塔塔顶字母");

scanf("%c", &letter);

printf("请输入金字塔塔高");

scanf("%d", &height);

letter_pyramid(letter, height);

return 0;

}

/**

* 打印字母金字塔

* @param char word  塔顶字母

* @param int  height 塔高

* @return void

*/

void letter_pyramid(char letter, int height)

{

int i,j,k;

/** @TODO 对字符越界做简单处理 */

if(letter+height*height > 256)  {

printf("塔高超出限制,拜拜!!!\n");

return ;

}

for ( i = 0; i < height; i++)   {

/** 打印空格 */

for(k=height-(i+1); k>0; k--) printf("%c", ' ');

/** 打印字母 */

for ( j = 0; j < (i*2)+1; j++)

{

printf("%c", letter++);

}

printf("\n");

}

}

1-5. 编程,打印下列上三角形式的乘法九九表。

1  2  3  4  5  6  7  8  9

----------------------------

1  2  3  4  5  6  7  8  9

4  6  8 10 12 14 16 18

9 14 15 18 21 24 27

16 20 24 28 32 36

25 30 35 40 45

36 42 48 54

49 56 63

86 72

81

# include <stdio.h>

int main()

{

void multiplication_table();

multiplication_table();

return 0;

}

/**

* @desc 打印 99乘法表

*/

void multiplication_table()

{

int n = 9,i,j,k;

for (i = 1; i <= n; i++)  printf("%3d", i);

printf("\n");

for (j = 1; j <= n; j++) printf("---");

printf("\n");

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

{

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

{

if (j<i){

printf("   ");

}else{

printf("%3d", i*j);

}

}

printf("\n");

}

}

2-1. 编程,输出200以内(含200)所有完全平方数C(满足C2=A2+B2)及其个数。

# include <stdio.h>

int main()

{

void pythagorean_theorem();

pythagorean_theorem();

return 0;

}

/**

*  @desc 求 200以内构成勾股数的个数

*        勾股数公式(a²+ 1)²=(a²-1)²+(2a)²

*/

void pythagorean_theorem()

{

int n=200,i,a,b,c;

int square[200];//用于存放符合勾股数的数

int num=0;// 计算 勾股数的个数

for (i = 1; i*i+1 <= n; i++)

{

/** 套用勾股数定理 */

a  = (i*i+1);

b  = (i*i-1);

c  = 2*i;

if ( a*a == b*b +  c*c && b>0)

{

square[num] = a;

++num;

}

}

if (!num)

{

printf("没有找到符合要求的");return;

}

printf("200内能组成勾股数的个数%d\n",num);

printf("分别是:\n");

while (num)

{

printf("%d\n",square[--num]);

}

}

2-2. 中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何? 编程,输出所有可能的购买方案。

# include <stdio.h>

int main()

{

void money100_chickens100();

money100_chickens100();

return 0;

}

/**

* @desc 《算经》的“百钱百鸡问题”

*          分析得出公式:5x+3y+z/3=100, x+y+z=100;

*/

void money100_chickens100()

{

int max_x = 100/5;//鸡翁最大数

int max_y = 100/3;//鸡母最大数,取整

int x,y,z;//各种鸡个数

for (x = 0; x <= max_x; x++)

{

for (y = 0; y <= max_y; y++)

{

z = 100 - x - y;

if (x *5 + y*3 + z/3.0 == 100)

{

printf("x=%d,y=%d,z=%d\n",x,y,z);

}

}

}

}

2-3. 设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),编程,输出所有满足条件的N。

# include <stdio.h>

int main()

{

/** 4位数9倍恰好是其反序数,所以其反序也是4位数*/

int max = 10000 /9 ;//最大的反序之前的数

int i;

int antitone(int n);

for ( i= 1001; i < max; i++){

if(i*9 == antitone(i)){

printf("%d\n", i);

}

}

return 0;

}

int antitone(int n){

int i=0;

while (n>0){

i = (n%10)+i*10;

n /=10;

}

return i;

}

2-4. 编程,求全部水仙花数。所谓水仙花数是指一个三位数,其各位数字立方的和等于该数。如:153 = 13 + 53+ 33

# include <stdio.h>

int main()

{

int i,j,k,n,cube;

for ( i = 1; i <= 9; i++)   {

for ( j = 0; j <= 9; j++)   {

for ( k = 0; k<= 9; k++){

n = i*100+j*10+k;

cube = i*i*i + j*j*j + k*k*k;

if (n==cube)    {

printf("%d\n", n);

}

}

}

}

}

 

2-5. 编程,输出555555的约数中最大的三位数。

# include <stdio.h>

int main()

{

int i ;

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

{

if (555555 % i == 0)

{

printf("%d\n", i);

break;

}

}

}

2-6. 编程,输出1000到100000之间所有满足下列条件的所有整数及其个数:整数的各位数字之和等于5。

# include <stdio.h>

void main()

{

int min_i=1000;

/** 因为各位位数之和等于5,所以大于50000的数位数之和也大于5 */

unsigned int max_i=50000;

unsigned int n,num=0;

int figure(long number);

for(n=min_i;n<=max_i;n++){

if(figure(n)==5){

printf("%d\n",n);

num++;

}

}

printf("个数:%d\n",num);

}

int figure(long number){

int result=0;

while(number>0){

result      += number%10;

number   = number/10;

}

return result;

}

2-7.输出1000以内的全部“完全数”。

# include <stdio.h>

void main()

{

int n=1000;

int num=0,i,j,r;

for (i = 1; i <= n; i++){

r = 0;

for (j = 1; j < i; j++){

if (i%j==0){

r +=j;

}

}

if (r==i){

num++;

printf("%d\n",i);

}

}

printf("完全数的个数:%d", num);

}

3-1. 编程,输入10个整数,然后进行查找。输入要查找的整数,若找到,则输出该数在数组中的下标位置,否则输出“can not found!”。

# include <stdio.h>

void main()

{  int num[10],i,find,flag=0;

printf("请输入10个数\n");

for (i = 0; i < 10; i++){

scanf("%d", &num[i]);

}

printf("请输入要查找的数");

scanf("%d", &find);

for (i = 0; i < 10; i++){

if (num[i] == find) {

flag=1;

printf("下标为%d\n", i);

}

}

if (flag==0) {

printf("can not found!\n", i);

}

}

3-2.编程,输入一个字符串并删除其中的指定字符。例如,对于字符串abcdcf,指定删除c,则结果为:abdf。

#include <stdio.h>

void main()

{

char str[80],str2[80],letter;

int i=0, j=0;

printf("请输入一个字符串\n");

gets(str);

printf("请输入字符串中要删除的字符\n");

scanf("%c",&letter);

while (str[i]!='\0'){

if (str[i] != letter)   {

str2[j++] = str[i];

}

i++;

}

str2[j]= '\0';

puts(str2);

getch();

}

3-3. 编程,输入一行字符,将其反序后再输出。

#include <stdio.h>

void main()

{

char str[80],letter,str2[80], *p=str, *q=str2;

int len=0;

printf("请输入一个字符串\n");

gets(str);

while (*p){

p++;

}

len = p-str;

while (--len>=0){

*q++ = str[len];

}

*q = '\0';

puts(str2);

}

3-4. 编程,输入一行字符,将其中的每个字符从小到大排列后输出。

#include <stdio.h>

void main()

{

char str[80],*s=str,temp;

int i,j,len;

scanf("%s",str);

while (*s){

s++;

}

len = s - str;

for (i = 0; i < len; i++)   {

for ( j = i+1; j < len; j++){

if (str[i]>str[j]){

temp    =   str[i];

str[i]  =   str[j];

str[j]  =   temp;

}

}

}

printf("%s",str);

getch();

}

3-5. 编程,输入两个已经按从小到大顺序排列好的字符串,将两个字符串合并为一个新的从小到大排列字符串并输出。

#include <stdio.h>

void main()

{

char str[80],str2[80],str3[80],*p=str,*q=str2,*r=str3, *temp_p;

printf("请输入第一个顺序字符串\n");

gets(str);

printf("请输入第二个顺序字符串\n");

gets(str2);

while (*p!='\0' && *q!='\0'){

*r++ = *p <*q ? *p++ : *q++;

}

temp_p = *p=='\0' ? q :p;

while (*r ++ = *temp_p ++ );

*r= '\0';

puts(str3);

getch();

}

3-6. 输入一行文字,判断该行文字是否是回文。是输出:YES。否输出:NO

#include <stdio.h>

void main()

{

char input[80],*p,*q;

p=q=input;

printf("input string:\n");

gets(input);

while(*p!='\0')p++;

p--;

while (p>=input) {

if (*p != *q) {

printf("NO");

getch();

return;

}

p--;q++;

}

printf("YES");

getch();

return;

}

3-7. 编程,输入若干个字符串,当输入字符串的长度为0时停止输入。输出最长的字符串。

#include <stdio.h>

int strlen(char str[]){

char *p=str;

while (*p!='\0' && p++);

return p-str;

}

//把第二个字符串的值复制给第一个

void strcpy(char str1[], char str2[]){

char *p=str2, *q=str1;

while (*q++ = *p++);

}

//求最短字符串

void main()

{

char str[80],str2[80];

int len=0, max_len;

gets(str);

max_len= strlen(str);

strcpy(str2, str);

gets(str);

do{

len = strlen(str);

if (len>max_len){

max_len = len;

strcpy(str2, str);

}

gets(str);

} while (str[0]!='\0');

printf("%s", str2);

getch();

}

 

3-8. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。

#include <stdio.h>

void main()

{

char str[80], *p=str;

int num=0,flag=1;

gets(str);

while (*p != '\0'){

printf("%d,",*p == ' ');

if (*p == ' '){

flag=1;

}else{

if(flag)num++;

flag=0;

}

p++ ;

}

printf("total %d words", num);

几道C语言的题目!的更多相关文章

  1. 闻道Go语言,6月龄必知必会

    大家好,我是马甲哥, 学习新知识, 我的策略是模仿-->归纳--->举一反三, 在同程倒腾Go语言一年有余,本次记录<闻道Go语言,6月龄必知必会>,形式是同我的主力语言C#做 ...

  2. C语言面试题目之指针和数组

    说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充! 无特殊说明情况下,下面所有题s目都是linux下的32位C程序. 先来几个简单的热热身. 1.计算以下sizeof的值. char str ...

  3. 两道CTF Web的题目

    1.easyphp 1.1.题目描述 题目首先是一张不存在的图片 查看源码发现只有一句话 <img src="show.php?img=aGludC5qcGc=" width ...

  4. 一套很有意思的C语言测试题目

    网络上逛博客,发现了一套很有意思的测试题目: https://kobes.ca/ 大家有兴趣可以做一下,考一些关于C语言使用的细节: 中文翻译参考: https://www.cnblogs.com/l ...

  5. java几道简单的面试题目

    1.   请问以下程序会输出什么? public   class   Test   {  public   static   void   main(String[]   args)   {  Par ...

  6. C语言经典题目

    回顾一下吧: 一. 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 解析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 常规 ...

  7. CTF 两道web整数溢出题目(猫咪银行和ltshop)

    ①猫咪银行: (2018中科大hackgame) 一开始给十个CTB,而flag需要20个CTB,我们需要理财赚够20个. 理财是只能买入TDSU才可以获得收益.我们先上来直接把CTB全部换成TDSU ...

  8. 解了这14道C语言谜题后,所有人都失声了!我来带你深入了解C!

    本文展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且有相当的一些例子可能是我们日常工作可能会见得到的.通过这些迷题,希望你能更了解C语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...

  9. 几道web前端练习题目

    在 HTML 语言中,以下哪个属性不是通用属性?A]<class>B]<title>C]<href>D]<style> 在线练习:http://hove ...

随机推荐

  1. 试用mysql的infobright引擎

               海量数据分析处理,向来比较头疼费劲,特别是项目资金不允许的情况下,都是优先考虑开源软件,2007使用mysql,2009年尝试greenplum(公司最终选用oracle),20 ...

  2. 实用的VIM配置文件

    VIM配置文件名为.vimrc,默认在用户根目录下,或者在命令模式下输入:version可以获取配置文件路径. 在VIM命令行下输入options,然后回车,可以查看VIM所有的参数选项. 双引号&q ...

  3. MicrosoftSQLServer中的锁模式

    在SQL Server数据库中加锁时,除了可以对不同的资源加锁,还可以使用不同程度的加锁方式,即锁有多种模式,SQL Server中锁模式包括: 1.共享锁 SQL Server中,共享锁用于所有的只 ...

  4. 方案:解决 wordpress 中 gravatar 头像被墙问题

    Gravatar头像具有很好的通用性,但是却遭到了无辜的拦截,对于无法加载头像URL,我们在WordPress系统中通过修改默认的URL链接可以达到恢复头像的功能. 修改文件路径为 /wp-inclu ...

  5. web前端之 HTML介绍

    概述 HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以让浏览器 ...

  6. Traceroute原理介绍

    一.路由追踪 路由跟踪,就是获取从主机A到达目标主机B这个过程中所有需要经过的路由设备的转发接口IP. 二.ICMP协议 Internet控制报文协议(internet control message ...

  7. css之浏览器初始化方案

    HTML, body, div, h1, h2, h3, h4, h5, h6, ul, ol, dl, li, dt, dd, p, blockquote,pre, form, fieldset, ...

  8. struts2面试题

    由于找了很久的工作都没有找的,只能四处收集那个面试题的.和看面试题的 还有那个记忆力也不是很好了的,而那些公司面试的时候总会有一个面试题的!   在这里分享给大家(那个本来是想上传文件的,但是找不到的 ...

  9. Ext的labelWidth默认会给100

    Ext的textfield控件的labelWidth属性,如果没有设置这个属性,那么默认会给100,导致左侧有100px的留白

  10. Ext Radio 取消选中

    今天,做项目的时候遇到了要吧Ext Radio单选按钮取消选中状态,由于没有在formpanel中写, 导致不能用reset()方法,试了各种方法,最后这样写管用. radio1.setValue(f ...