一道c语言章节练习题题目

菜鸟求助一道C语言题目
[问题点数:20分]
本版专家分:0
CSDN今日推荐
本版专家分:7216
本版专家分:0
本版专家分:7216
本版专家分:0
本版专家分:1542
匿名用户不能发表回复!
其他相关推荐扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
C语言的一道选择题(13)以下选项中不能作为C 语言合法常量的是( ).A)'cd' B)0.1e+6 C)"\a" D)'\011'答案是A,C和D为什么错了呢
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
首先A本身这样写就不对,单引号字符,写2个字母算什么.C的话是C里面默认的响铃是不变的,如果你要问响铃为什么是常量,因为那算事件,触发事件的值固定不变.D的话不太清楚,不过那个不像8进制,8进制应该是o不是0,估计因为\0转义后是0就是011吧
为您推荐:
其他类似问题
扫描下载二维码一道C语言题目_百度知道
一道C语言题目
一道C语言题目给出详细解答过程,主要说一下c的值怎么求,谢谢...
一道C语言题目给出详细解答过程,主要说一下c的值怎么求,谢谢
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
c=2((2x+2y)%3)*2
就是说要计算c的时候发现要用的函数f1未定义,然后找到f1,结果f1里的f2也未定义,再找到f2,这就是函数的嵌套?
是的,对于嵌套函数 区分好 变量作用域 就OK了
好的,谢谢你了
你是不是多乘了一个2?
获赞数:19
a=11,b=12,c=2 c是a+b/3的余数
擅长:暂未定制
用软件打代码上去运行一下就知道结果了,求采纳
我是要过计算机二级,不是做作业
我也是学计算机的啊,
所以我叫你自己去测验一下
最起码能记住
为你推荐:
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。在毕业刚在第一家的公司的时候,项目经理有一次跟我们吐槽说面试一个水客(就是简历上精通C/C++)。聊了几句话,发现那个面试的人水分很大,现场出了一道笔试题。
题目,用c语言打印一个等腰直角三角形效果,三角形腰边长度为四个星星。效果如下
当然临场发挥给出来的题目,实际上就是在纸上画几个星星,让面试者笔试,不会有“等腰直角三角形”这种描述,这题目是我脑 (yi)补(yin)出来的。
面试者拿过纸来大手一挥,写出如下答案:
printf("*\n");
printf("**\n");
printf("***\n");
printf("****\n");“很好,还有别的实现方法吗”经理夸奖道
“没有了”
“那好,写个1000行的”
“……”,面试者哑口无言,心中万马奔腾。面试结果可想而知。
后来开会跟我们组员说个这次面试顺便吐槽我们组开发编码考虑不周全,第一反应该有两种方法,一种两个循环,一种一个循环。
时间过得好快,转眼间五年过去了,那会还没完全毕业,只是大四下半年在那家公司实习(当然毕业后还是一直待在哪儿),因为这个面试题太经典了,印象忒别深刻,就是不同水平的开发者都能做出这个面试题。今天就趁着深圳大雨,宅在家整理一下实现方案。
方法一、单刀直入,直接printf printf("*\n");
printf("**\n");
printf("***\n");
printf("****\n");方法二、printf双循环
外层循环负责换行,内层循环负责打印星星 printf("print by function %s\n", __func__);
for (int i = 0; i & i++) {
for (int j = 0; j & i + 1; j++) {
printf("*");
printf("\n");
}方法三、数组赋值
定义一个空字符串,然后在循环中递增赋值星星 char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
*(temp + i) = '*';
printf("%s\n", temp);
temp = NULL;方法四、字符串拼接
定义一个空字符串,然后在循环中递增拼接星星 char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
printf("%s\n", strcat(temp, "*"));
temp = NULL;方法五、snprintf控制打印输出 char *temp = new char[num + 1];
memset(temp, 0, num + 1);
char *stars = new char[num + 1];
memset(stars, '*', num);
stars[num] = '\0';
for (int i = 0; i & i++) {
* for snprintf you can consider that last index (n - 1) alway set to '\0'.
* NOTE: actually it would be setted to '\0' only when source length &
snprintf(temp, i + 2, "%s", stars); //
printf("%s\n", temp);
temp = NULL;
stars = NULL;方法六、memset初始化函数 char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
memset(temp, '*', i + 1);
printf("%s\n", temp);
temp = NULL;方法七、memcpy内存拷贝 char *stars = new char[num + 1];
memset(stars, '*', num);
stars[num] = '\0';
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
memcpy(temp, stars, i + 1);
printf("%s\n", temp);
stars = NULL;
temp = NULL;方法八、strncpy字符串拷贝
printf("printf by function %s\n", __func__);
char *stars = new char[num + 1];
memset(stars, '*', num);
stars[num] = '\0';
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
strncpy(temp, stars, i + 1);
printf("%s\n", temp);
stars = NULL;
temp = NULL;方法九、printf函数格式化打印
char *temp = new char[num + 1];
memset(temp, '*', num + 1);
*(temp + num) = '\0';
for (int i = 0; i & i++) {
printf("%.*s\n", i + 1, temp);
temp = NULL;方法十、等差数列插入换行符
void arithmetic_progression(int num = 4) {
printf("printf by function %s\n", __func__);
const int A1 = 2;
const int d = 1;
const int N = A1 * num + num * (num - 1) * d / 2;
char *temp = new char[N];
memset(temp, '*', N);
int An = 0, sum = 0;
for (int i = 0; i & i++) {
An = A1 + i * // actually i is (n - 1)
sum += An;
*(temp + sum - 1) = '\n';
*(temp + N - 1) = '\0'; // prevent new line on the last.
printf("%s\n", temp);
temp = NULL;
}完整的代码
stars.cpp#include &cstdio&
#include &cstdlib&
#include &cstring&
void directly(int notUse = 0) {
printf("print by function %s\n", __func__);
printf("*\n");
printf("**\n");
printf("***\n");
printf("****\n");
void twofor(int num = 4) {
printf("print by function %s\n", __func__);
for (int i = 0; i & i++) {
for (int j = 0; j & i + 1; j++) {
printf("*");
printf("\n");
void char_array(int num = 4) {
printf("print by function %s\n", __func__);
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
*(temp + i) = '*';
printf("%s\n", temp);
temp = NULL;
void char_strcat(int num = 4) {
printf("print by function %s\n", __func__);
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
printf("%s\n", strcat(temp, "*"));
temp = NULL;
void char_snprintf(int num = 4) {
printf("print by function %s\n", __func__);
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
char *stars = new char[num + 1];
memset(stars, '*', num);
stars[num] = '\0';
for (int i = 0; i & i++) {
* for snprintf you can consider that last index (n - 1) alway set to '\0'.
* NOTE: actually it would be setted to '\0' only when source length &
snprintf(temp, i + 2, "%s", stars); //
printf("%s\n", temp);
temp = NULL;
stars = NULL;
void char_memset(int num = 4) {
printf("print by function %s\n", __func__);
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
memset(temp, '*', i + 1);
printf("%s\n", temp);
temp = NULL;
void char_memcpy(int num = 4) {
printf("printf by function %s\n", __func__);
char *stars = new char[num + 1];
memset(stars, '*', num);
stars[num] = '\0';
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
memcpy(temp, stars, i + 1);
printf("%s\n", temp);
stars = NULL;
temp = NULL;
void char_strncpy(int num = 4) {
printf("printf by function %s\n", __func__);
char *stars = new char[num + 1];
memset(stars, '*', num);
stars[num] = '\0';
char *temp = new char[num + 1];
memset(temp, 0, num + 1);
for (int i = 0; i & i++) {
strncpy(temp, stars, i + 1);
printf("%s\n", temp);
stars = NULL;
temp = NULL;
void printf_format(int num = 4) {
printf("printf by function %s\n", __func__);
char *temp = new char[num + 1];
memset(temp, '*', num + 1);
*(temp + num) = '\0';
for (int i = 0; i & i++) {
printf("%.*s\n", i + 1, temp);
temp = NULL;
* 等差数列
* An = A1 + (n - 1) *
* sum(A) = A1 * n + n * (n - 1) * d / 2;
void arithmetic_progression(int num = 4) {
printf("printf by function %s\n", __func__);
const int A1 = 2;
const int d = 1;
const int N = A1 * num + num * (num - 1) * d / 2;
char *temp = new char[N];
memset(temp, '*', N);
int An = 0, sum = 0;
for (int i = 0; i & i++) {
An = A1 + i * // actually i is (n - 1)
sum += An;
*(temp + sum - 1) = '\n';
*(temp + N - 1) = '\0'; // prevent new line on the last.
printf("%s\n", temp);
temp = NULL;
typedef void (*star_printer)(int);
int main(int argc, char* argv[]) {
star_printer funclist[] = {directly, twofor, char_array, char_strcat,
char_snprintf, char_memset, char_memcpy, char_strncpy,
printf_format, arithmetic_progression};
const int N = sizeof(funclist) / sizeof(*funclist);
for (size_t i = 0; i & N; i++) {
printf("%lu --& ", i);
(*(funclist[i]))(4);
}说明: 删除指针通常是定义宏变操作,上面示例中是裸写代码,通常不建议这么做。
释放指针数组的宏操作#define SAFE_DELETE_ARR(p) {if (NULL != (p)) {delete[](p); (p) = NULL;}}编译及运行
$ g++ stars.cpp
$ ./a.out0 --& print by function directly
1 --& print by function twofor
2 --& print by function char_array
3 --& print by function char_strcat
4 --& print by function char_snprintf
5 --& print by function char_memset
6 --& printf by function char_memcpy
7 --& printf by function char_strncpy
8 --& printf by function printf_format
9 --& printf by function arithmetic_progression
看起来有十种实现方法!而实际上主要实现方法就是四种:直接打印(方法一),双循环控制打印(方法二),单循环赋值打印(方法三到方法八),字符串定点换行(方法十)。至于方法九,虽然可以算独立方法,其实也只不过在语言接口上下功夫罢了,换中语言(java,c#)可能就不能发挥作用了。方法三到方法八都是赋值法,只是在c语言的api上下功夫罢了。
这道面试题之所以经典是因为对于不同水平的面试者能够考察其对C C++理解的深度,对API的掌握情况。
后记,当初我当场想到方法是方法二双循环print和方法六memset,后来问了经理的答案是什么,他出题时用方法八snprintf,用memset写出来的时候他很惊讶,因为他自己也没考虑到有这种方法,当然我也没想到snprintf方法。要答案也是有技巧的,我们当初早就转正了,好奇心驱使下我在开会后把代码撸好QQ给他才问答案的。
说说我的面试吧,经理的技术思维很厉害,当初面试因为技术方面没啥问题,经理突然问我“你觉得测试重要吗,假如神州飞船出现故障会怎样”,我现场拿起笔和纸写一个多项式,指着多项式中指数高的变量“故障分等级,事故后果就多项式的和,神舟飞船这种故障的指数应该大一点”,然后,没然后了,哈哈
========特别提醒=========鲁迅小说《孔乙己》中,孔乙己告诉孩子们说,茴香豆有四种写法,即茴、回、囘、囬,还有一种是“口”字里面有个“目”字。本篇博客是本人上周末下大雨时闲时写的总结分享,这里要提醒编程初学者不要过分纠结这种细枝末节的知识,有好多重要的知识架构,计算机原理、网络、设计模式、数据结构才是干货,值得慢慢积累。现在C++最新标准已经到C++2014了,C++2011早已在新的开源项目中广泛使用了。C++2011和C++98某种程度上讲就是两种语言。学习C++不要像清华某唐的教材还在纠结运算符优先级(不确定的直接括号秒杀),
i += ++i;这种牛角尖问题,我曾经自学中也走入这样的误区。特地提醒,不要被误导。
C/C++面试经典
这里汇总一下面试的时候经常会被问到的一些问题。
1.const 有什么用途
1:定义只读变量,即常量
2:修饰函数的参数和函数的返回值
3: 修饰函数的定...
linux c/c++ 面试题目整理(一)
linux c/c++面试题目整理系列
static有什么用途?(请至少说明两种)1.限制变量的作用域2.设置变量的存储域7.
引用与指针有什么区别?1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可...
在面试中,你会经常遇到的10大C语言基础算法(下)
6、检查一个数能不能表示成两个质数之和http://www.fdjzxyy.com源代码:#include &stdio.h&int prime(int n);int ma...
class和struct有什么区别
转载地址:http://genwoxuec.blog.51cto.com/334
考点:class和struct的区别
出现频率:☆☆☆...
1.c++中为什么用模板类?
a.与类型无关,具有很高的可复用性。
b.他在编译的时而不是运行时候检查数据类型,保证了类型安全性
c.他与平台无关的,具有可已移植性
d.可用于基本数据类型...
*版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M
*详细原因:
交 经典&em&C面试&/em&(下)希望对大家有用 3积分 立即下载 ...
*版权证明: 只允许上传png/jpeg/jpg/gif格式的图片,且小于3M
*详细原因:
交 面试中的 经典的&em&c面试&/em& 3积分 立即下载 ...
&em&C面试&/em&大全(面试可以参考的)摘入网上多家笔试题,数据结构,操作系统等... &em&C面试&/em&大全(面试可以参考的)摘入网上多家笔试题,数据结构,操作系统等 综合评分:0 收藏评论...
没有更多推荐了,一道C语言题目_百度知道
一道C语言题目
一道C语言题目给出详细解答过程,网上有两种答案,我不清楚哪个正确,来问一下...
一道C语言题目给出详细解答过程,网上有两种答案,我不清楚哪个正确,来问一下
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:42
参与团队:
首先那一行赋值语句是没有意义的,除非放在scanf()的下一行,因为变量名一样,后面的赋值会覆盖前面。所以printf输出来的三个变量就是手动输入的变量,scanf中%c可以接受空格键,运行时输入55 A B,55赋值给k变量,空格给c1,A给c2,B不接收。所以结果应该是&55, ,A&
就是说scanf()函数可以读取空格,我上面虽然只打了55 A B&回车&,但是对scanf函数来说是55空格A空格B空格&回车&,然后它只读取了前3个,这样理解可以吗?
回车的话scanf()能读取吗?
“55空格A空格B空格”,可以这么理解。scanf()能不能读取空格跟要输入的变量的数据类型有关,%c是字符型变量格式,空格也算字符,像%d,%s这些以空格作为分割符的就会忽略空格。比如那行scanf里面是&%d%d%d&的话,输入3个数的中间有多少空格都不影响。回车用%c也能读取,读出来是&\n&,比如下面会输出 Yeschar&c;scanf(&%c&,&c);if(c=='\n')printf(&Yes&)
正是因为%c是字符型变量才能读取空格,原来如此,谢谢你了
采纳数:49
获赞数:121
擅长:暂未定制
测试的结果 如果中间是55AB中间有空格的话,就是55,,A,没空格就是55,A,B
中间有回车会不会也被scanf()函数读取?
为你推荐:
其他类似问题
您可能关注的内容
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 c语言题目 的文章

 

随机推荐