C %m.ns 输出
#include <stdio.h>
#define N 19
int main()
{
int i;
for (i=0;i<=N;i++)
{
printf("%*.*s%-*.*s\n",N,i<=N/2?i:N-1,"*******************",\
N,i<=N/2?i+1:N-i+1,"*******************");
}
return 0;
}
%m.ns中间的m.n是对%s的修饰符,
m表示字符串显示时的最大宽度,超过的会被截掉,
n表示显示字符串中的几个字符,
如果n<m,则数据靠右对齐显示
%-m.ns,其它和上面一样,只是靠左对齐
%*.*s 两个星号类似通配符,它的实际值由后面的参数决定
如printf("%*.*s",m,n,"********")就等价于%m.ns
现在这段好理解了
printf("%*.*s%-*.*s\n",N,i<=N/2?i:N-i,"*******************",N,i<=N/2?i+1:N-i+1,"*******************");
将屏幕分成19+19两半,前面一半由%*.*s控制,后面一半由%-*.*s控制
当 i<=N/2时,每行输出 i+(i+1)=2i+1 个星号
当 i>N/2 时,每行输出 (N-i)+(N-i+1)=2(N-i)+1 个星号
转自 :http://www.oldlinux.org/oldlinux/viewthread.php?tid=9962&extra=page%3D2
相关文档:
(1)
数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
(2)
数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
(3)
指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址
(4)
数组名作为函数形参时,在函数体内,其失去了本身的内涵 ......
Q:什么是C风格转换?什么是static_cast, dynamic_cast 以及 reinterpret_cast?区别是什么?为什么要注意?
A:转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。比如,为了转换一个类型为doubole的浮点数的指针到整型:
......
二分查找的代码.
int bfind(int* a,int len,int val)
{
int m = len/2;
int l = 0;
int r = len;
while(l!=m && r!= m)
{
if(a[m] > val)
& ......
1.已知strcpy 函数的原型是:
char *strcpy(char *strDest, const char *strSrc);
其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy
答案:
char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest ......
在这里贴上最近自己忙活的用turbo C编写的“打字游戏”的源代码:
#include<graphics.h>
#include<conio.h>
#include<STDLIB.h>
#include<dos.h>
#define BK_COLOR BLACK
#define CHAR_COLOR WHITE
#define C_COLOR BLUE
#define num 10
#define SPEED 3000
#define Esc 27
# ......