注:编译环境 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. Linux 日志

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事.Linux 中提供了异常日志,并且日志的细节是可配置的. Linux 日志都以明文形式存储,所以您不需要特殊的工具就可以搜索和阅读它们.您还 ...

  2. Linux服务器SNMP常用OID (转)

    原文地址:http://www.haiyun.me/archives/linux-snmp-oid.html 收集整理一些Linux下snmp常用的OID,用做服务器监控很不错. 服务器负载: 1 2 ...

  3. Shortest Word Distance 解答

    Question Given a list of words and two words word1 and word2, return the shortest distance between t ...

  4. Hdu1401-Solitaire(双向bfs)

    Solitaire is a game played on a chessboard 8x8. The rows and columns of the chessboard are numbered ...

  5. jquery ajax 局部table 刷新技术

    点击查询:

  6. 【多线程】--生产者消费者模式--synchronized版本

    在实现生产者消费者模式之前,我们先了解一下线程的5种状态:被创建.运行.冻结.消亡.阻塞,如下图: 在Jdk1.5发布之前,我们实现生产者消费者模式一般使用synchronized + while循环 ...

  7. HTTP协议3之压缩--转

    HTTP内容编码和HTTP压缩的区别 HTTP压缩,在HTTP协议中,其实是内容编码的一种. 在http协议中,可以对内容(也就是body部分)进行编码, 可以采用gzip这样的编码. 从而达到压缩的 ...

  8. FullCalendar 的学习笔记(二)

    下面是一个.NET webForm的具体列子 注意引用了artDialog 以及异步请求数据的json格式字符串 <html xmlns="http://www.w3.org/1999 ...

  9. Android SQLite的使用2(非原创)

    1.数据库的增.删.改.查:execSQL方法 public void insertAction() {//添加信息 db.execSQL("insert into Emp(name,sal ...

  10. PHP学习笔记十九【析构函数】

    <?php class Person{ public $name; public $age; public function __construct($iname,$iage) { $this- ...