注:编译环境 VC2010,系统WIN7 64位,其他编译环境和系统未测试
1-1. 编程,输入n,输出如下例(n=5)所示的图形:
*****
*****
*****
*****
*****
# include
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
{
/** 打印空格 */
for(j=length-(i+1); j>0; j--)
{
printf("%c", space);
}
/** 打印元素 */
for(k=0; k
{
printf("%c",element);
}
printf("\n");
}
}
1-2. 编程,输入n值,输出如下例(n=4)所示的高和上底均为n的等腰梯形:
****
******
********
**********
# include
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
{
/** 打印空格 */
for(j=length_of_side-(i+1); j>0; j--)
{
printf("%c", space);
}
/** 打印元素 */
for(k=0; k
{
printf("%c",element);
}
printf("\n");
}
}
1-3. 编程,输入n,输出如下例(n=3)所示的边长为n的菱形:
*
***
*****
***
*
# include
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
{
/** 计算 空格的数量 */
n = length_of_side-(i+1);
n = n < 0 ? -n : n;
/** 打印空格 */
for(j=n; j>0; j--){
printf("%c", space);
}
/** 计算 棱形上边点 和下边点的数量 */
m = i
/** 打印元素 */
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
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
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
printf(" ");
}else{
printf("%3d", i*j);
}
}
printf("\n");
}
}
2-1. 编程,输出200以内(含200)所有完全平方数C(满足C2=A2+B2)及其个数。
# include
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
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
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
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
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
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
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
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
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
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
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
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
}
temp_p = *p=='\0' ? q :p;
while (*r ++ = *temp_p ++ );
*r= '\0';
puts(str3);
getch();
}
3-6. 输入一行文字,判断该行文字是否是回文。是输出:YES。否输出:NO
#include
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
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
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语言面试题目之指针和数组
说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充! 无特殊说明情况下,下面所有题s目都是linux下的32位C程序. 先来几个简单的热热身. 1.计算以下sizeof的值. char str ...
两道CTF Web的题目
1.easyphp 1.1.题目描述 题目首先是一张不存在的图片 查看源码发现只有一句话
一套很有意思的C语言测试题目
网络上逛博客,发现了一套很有意思的测试题目: https://kobes.ca/ 大家有兴趣可以做一下,考一些关于C语言使用的细节: 中文翻译参考: https://www.cnblogs.com/l ...
java几道简单的面试题目
1. 请问以下程序会输出什么? public class Test { public static void main(String[] args) { Par ...
C语言经典题目
回顾一下吧: 一. 有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 解析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. 常规 ...
CTF 两道web整数溢出题目(猫咪银行和ltshop)
①猫咪银行: (2018中科大hackgame) 一开始给十个CTB,而flag需要20个CTB,我们需要理财赚够20个. 理财是只能买入TDSU才可以获得收益.我们先上来直接把CTB全部换成TDSU ...
解了这14道C语言谜题后,所有人都失声了!我来带你深入了解C!
本文展示了14个C语言的迷题以及答案,代码应该是足够清楚的,而且有相当的一些例子可能是我们日常工作可能会见得到的.通过这些迷题,希望你能更了解C语言. 如果你不看答案,不知道是否有把握回答各个谜题?让 ...
几道web前端练习题目
在 HTML 语言中,以下哪个属性不是通用属性?A]B]C]D]
C#部分---语言经典题目——兔子生兔子
根据本月成兔=上月成兔+上月小兔:本月小兔=上月幼兔:本月幼兔=本月成兔 利用while循环: Console.WriteLine("请输入月份:"); //int m = int ...
随机推荐
如何使用Sitemap和menu创建网站导航
1.添加Sitemap文件 将Sitemap内容替换为如下示例代码: <?xml version="1.0" encoding="utf-8" ?> ...
如何对Backbone.Collection进行过滤操作
首先我想说的是这篇文章的题目起的很怪,因为我不知道起个什么名字比较好.渲染列表是我们应用中最常见的操作了吧,在运用Backbone的应用中,我们一般会把列表作为一个Collcetion,然后指定一个V ...
OSPF虚链路配置.示例1
在OSPF 网络中,区域0为骨干区域,其它的为非骨干区域,非骨干区域必须与骨干区域直接相连. 根据拓扑图可看到区域1与骨干区域0直接相连而区域2与骨干区域没有直接相连,这种情况下我们可以创建一条虚 ...
在C#中使用NPOI2.0操作Excel2003和Excel2007
Excel2003: #region Excel2003 /// /// 将Excel文件中的数据读出到DataTable中(xls) /// ...
android 转帖留链接
Android开发:用Drawable XML绘制带阴影效果的圆形按钮 http://evis.me/2013/05/android-dev-render-button-with-s ...
Windows Phone开发(9):关于页面状态
原文:Windows Phone开发(9):关于页面状态 按照一般做法,刚学会如何导航,还是不够的,因为要知道,手机里面的每个页面,就如同Web页面一样,是无状态的. 啥是无状态?如果我们玩过Web开 ...
虚拟机Q&;A
Q1:虚拟机运行一段时间后,各个版本的第一台虚拟机容量变大,增大容量可以接受 原因:不详 解决方法:用备份镜像替换当前镜像 1.1G Jun 24 17:07 win7_sp1_32_0.qcow2 ...
nginx负载均衡精简配置实例
[root@localhost ~]# vim nginx.conf user nginx; worker_processes ; error_log /var/log/nginx/error.log ...
R下载package的一些小问题
1.Error in install.packages : unable to create ‘C:/Users/???/Documents/R/win-library\3.5 采用管理员身份运行,先 ...
C++primer习题--第1章
本文地址:http://www.cnblogs.com/archimedes/p/cpp-primer-chapter1-ans.html,转载请注明源地址. [习题 1.3] 编一个程序,在标准输出 ...