竖式问题

3/8/2017来源:ASP.NET技巧人气:2000

#include<stdio.h> #include<string.h> int main() { char s[20], buf[100]; int abc, de, x, y, z, mark, count = 1; scanf("%s", s); for(abc = 100; abc <= 999; abc ++) for(de = 10; de <= 99; de ++) { x = abc*(de%10); y = abc*(de/10); z = abc*de; sPRintf(buf, "%d%d%d%d%d", abc, de, x, y, z);\\【0】 mark = 1; //初始化位置很重要【1】 for(int i = 0; i < strlen(buf); i++) { if(!strchr(s, buf[i])) //存在不符合集合元素的字符【2】 { mark = 0; break; } } if(mark) { printf("<%d>\n", count++); printf("%5d\n", abc); printf("X%4d\n", de);//控制输出位数【3】 printf("-----\n"); printf("%5d\n", x); printf("%4d \n", y); printf("-----\n"); printf("%5d\n", z); } } return 0; } strchr()函数:查找某字符在字符串中首次出现的位置

头文件:string.h

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为: char * strchr (const char *str, int c);

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的组后一个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用strrchr()函数。

sprintf()函数:将格式化的数据写入字符串

头文件:stdio.h sprintf()函数用于将格式化的数据写入字符串,其原型为: int sprintf(char str, char format [, argument, …]); 【参数】str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。 除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数–格式化字符串–上。 printf()和sprintf()都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”开头的格式说明符(format specifications)来占据一个位置,在后边的变参列表中提供相应的变量,最终函数就会用相应位置的变量来替代那个说明符,产生一个调用者想要的字符串。 sprintf()最常见的应用之一莫过于把整数打印到字符串中,如: sprintf(s, “%d”, 123); //把整数123打印成一个字符串保存在s中 sprintf(s, “%8x”, 4567); //小写16进制,宽度占8个位置,右对齐 sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕。sprintf的第一个参数应该是目的字符串,如果不指定这个参数,执行过程中出现 “该程序产生非法操作,即将被关闭….”的提示。 sprintf()会根据参数format 字符串来转换并格式化数据,然后将结果复制到参数str 所指的字符串数组,直到出现字符串结束(‘\0’)为止。关于参数format 字符串的格式请参考printf()。 【返回值】成功则返回参数str 字符串长度,失败则返回-1,错误原因存于errno 中。